2010-10-14 44 views
5

我刚刚遇到了VS2010和Script#的一个很奇怪的问题,大部分时间我都可以重新创建。脚本#和编译器问题

在我的简单场景中,我的解决方案中有2个项目;一个标准的Asp.Net MVC2 Web应用程序和一个Script#jQuery类库。我使用静态方法创建了一个静态类(由[Imported]赋值),我的意图是我可以将此类以代码映射到外部Javascript库,如文档中所述。但是,似乎每当我用[IgnoreNamespace]装饰这样一个类来实现这个目标,项目就停止了编译的成功,但是并没有给我任何反馈,说明它为什么失败(错误窗口中没有错误,例如)。因为Visual Studio似乎进入永久的不是构建失败的状态,所以摆脱这两者并不容易,删除类和项目文件不解决它,也不重新启动Visual Studio。我可以让VS成功构建项目的唯一方法是完全删除项目,创建一个新项目然后重新添加文件,这至少令人讨厌。

有了详细的构建输出设置,我得到如下:

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

..它没有告诉我很多。

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

在这一点上,我倾向于认为该错误在于Script#,但只是希望得到确认,并且如果有可能的话找到可能的解决办法。

+0

你应该减少你想要导入的课程并将其发布到这里。 – 2010-10-14 17:43:23

+0

另外,你使用的是最新版本的编译器?如果您尚未尝试0.6.1.0,请尝试。 – 2010-10-14 17:44:19

+1

感谢您的回复。 我已经意识到,只有在尝试向Script#项目中插入新类时选择“添加类..”项,才会发生此问题,而不是选择“添加项”。然后选择一个Script#类从那里。只要您使用第一种方法添加类,它就会呈现项目不可用。 它确实有道理;我显然必须使用正确的方法将项目添加到项目中。即使生成的文件看起来完全一样,S#显然知道它们之间的差异,并且不喜欢它。不幸的是,当你在该区域时很容易犯错:( – 2010-10-14 19:44:38

回答

5

以防万一任何人有类似的问题,我找到了问题的原因。

使用此方法添加类或从其他项目的文件中复制以在脚本#中使用时,会导致将对System.dll的引用添加到项目中。这(可以理解)导致项目停止编译没有错误。

如果对此有警告,或者Script#以某种方式检测何时发生这种情况,并且/或者在使用“添加类”或导入文件时创建新模板,但这只是一个方便的问题,至少现在我可以毫不费力地让我的项目再次编译,只需删除此参考。

+0

您应该将其标记为答案 – 2011-11-05 22:11:54

1

当试图再次让我的项目建设,我碰到了下面就来,可能的解决方案:

  • “家\ HomePage.cs”和“共享\ Utility.cs”不能删除和保留它们最初创建的位置
  • “Home \ HomePage.cs”和“Shared \ Utility.cs”必须是“* .csproj”文件中的最后一个条目。在他们之后,没有“编译”标签应该遵循
  • 有问题的调用“脚本。文字”可能导致无声失败 - 有参数时尤其要小心(如Script.Literal("{0}.doFoo()", variable)
  • 同样的似乎是真正的‘的String.Format’当格式参数无效
  • 命名空间和文件夹似乎引起许多问题,将所有类放入同一个命名空间,并将所有类放入同一个文件夹中可能会有所帮助
0

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