脚本#和编译器问题

问题描述 投票:0回答:3

我刚刚在 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 1.0\ScriptSharp.targets”中的目标“AfterCompile”(目标“Compile”取决于它) ): 任务“ScriptCompilerTask” 完成执行任务“ScriptCompilerTask”——失败。 完成在项目“Scripts.csproj”中构建目标“AfterCompile”——失败。

..这并没有告诉我全部。

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

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

c# visual-studio-2010 script#
3个回答
5
投票

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

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

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


1
投票

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

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.