【问题标题】:Script# and compiler problems脚本#和编译器问题
【发布时间】:2010-10-14 16:38:50
【问题描述】:

我刚刚在 VS2010 和 Script# 中遇到了一个非常奇怪的问题,大多数时候我都可以重新创建。

在我的简单场景中,我的解决方案中有 2 个项目;一个标准的 Asp.Net MVC2 Web 应用程序和一个 Script# jQuery 类库。我创建了一个带有静态方法的静态类(属性为 [Imported]),其目的是我可以将代码中的此类映射到外部 Javascript 库,如文档中所述。

但是,似乎每当我用 [IgnoreNamespace] 装饰这样一个类来实现这个目标时,项目就会停止成功编译,但没有给我任何关于它失败原因的反馈(错误窗口中没有错误,因为例子)。摆脱它们也不是一件容易的事,因为 Visual Studio 似乎进入了不构建失败的永久状态;删除类和项目文件并不能解决它,也不能重新启动 Visual Studio。让 VS 成功构建项目的唯一方法是完全删除项目,创建一个新项目,然后重新添加文件,至少可以说这很烦人。

通过详细的构建输出设置,我得到以下信息:

在项目“e:\project\local\ScriptSharpDemo\Scripts\Scripts.csproj”中的文件“C:\Program Files (x86)\ScriptSharp\v1.0\ScriptSharp.targets”中定位“AfterCompile”(目标“编译”取决于它): 任务“ScriptCompilerTask” 完成执行任务“ScriptCompilerTask”——失败。 在项目“Scripts.csproj”中完成构建目标“AfterCompile”——失败。

.. 这并不能告诉我很多。

有几次我设法创建了这种类型的类,然后成功构建,但大多数情况下我可以非常可靠地重现这个问题。

在这一点上,我倾向于认为错误在于 Script#,但只想确认这一点,并找到可能的解决方法(如果有的话)。

【问题讨论】:

  • 您应该减少您尝试导入的课程并在此处发布。
  • 另外,您使用的是最新版本的编译器吗?如果您还没有,请尝试 0.6.1.0。
  • 感谢您的回复。我已经意识到,只有在尝试将新类插入 Script# 项目时选择“Add Class..”项,而不是选择“Add Item..”然后从那里选择 Script# 类,才会出现此问题.一旦您使用第一种方法添加了一个类,它就会使项目无法使用。这确实有道理;我显然必须使用正确的方法将项目添加到项目中。尽管生成的文件看起来完全一样,但 S# 显然知道其中的区别并且不喜欢它。不幸的是,当您处于该区域时,这是一个容易犯的错误:(
  • 我刚刚又遇到了这个问题,只是这次我使用正确的方法添加了一个新类。我刚去添加项目->脚本#->类,试图重建项目,现在它说构建失败,没有任何错误消息。我试过删除文件,清理/重建项目,但没有任何效果。我想您在开发过程中从未遇到过这种情况?是否有某种编译器缓存我可以清除以重新开始构建,而无需重新创建整个项目?我使用的是 0.6.2,但如上所述,0.6.1 也发生了这种情况。

标签: c# visual-studio-2010 compiler-construction script#


【解决方案1】:

以防万一有人遇到类似问题,我已经找到了问题的原因。

当使用此方法添加类或从另一个项目复制文件以在 Script# 中使用时,这会导致对 System.dll 的引用添加到项目中。这(可以理解)导致项目停止编译而不会出错。

最好有一个关于这个的警告,或者让 Script# 以某种方式检测这种情况何时发生和/或为我使用“添加类”或导入文件时创建一个新模板,但这只是一种方便问题,至少现在我可以通过删除此引用轻松地再次编译我的项目。

【讨论】:

    【解决方案2】:

    在尝试再次构建我的项目时,我遇到了以下可能的解决方案:

    • 不得删除“​​Home\HomePage.cs”和“Shared\Utility.cs”并保留它们最初创建的位置
    • “Home\HomePage.cs”和“Shared\Utility.cs”必须是“*.csproj”文件中的最后一个条目。在它们之后,不应跟随任何“编译”标签
    • 对“Script.Literal”的调用有问题可能会导致静默失败 - 使用参数时尤其要小心(例如 Script.Literal("{0}.doFoo()", variable)
    • 当格式参数无效时,“String.Format”似乎也是如此
    • 命名空间和文件夹似乎会导致很多问题,将所有类放入同一个命名空间并将所有类放入同一个文件夹可能会有所帮助

    【讨论】:

      【解决方案3】:

      我尝试了此处给出的所有建议,但仍然发现问题。最终,我确定我的情况的原因是我向我的一个属性添加了一个 [IntrinsicProperty] 属性。删除它解决了这个问题。不要问我为什么这会导致问题,但我想我会分享这个解决方案以防其他人遇到它。

      【讨论】:

        猜你喜欢
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多