C# 脚本和编译器问题
我刚刚在VS2010和脚本#方面遇到了一个非常奇怪的问题,大多数时候我都能够重新创建它 在我的简单场景中,我的解决方案中有2个项目;一个标准的Asp.Net MVC2 Web应用程序和一个脚本#jQuery类库。我创建了一个静态类(属性为[Imported]),上面有一个静态方法,目的是我可以在代码中将这个类映射到一个外部Javascript库,如文档中所述 然而,似乎每当我用[IgnoreNamespace]来装饰这样一个类以实现这一目标时,项目都会停止成功编译,但不会给我任何关于失败原因的反馈(例如,错误窗口中没有错误)。这两者都不容易摆脱,因为VisualStudio似乎陷入了一种不构建失败的永久状态;删除类和项目文件无法解决此问题,也无法重新启动visual studio。我能让VS成功构建项目的唯一方法是完全删除该项目,创建一个新项目,然后再添加文件,至少可以说这很烦人 通过详细的生成输出设置,我得到以下结果: 项目“e:\project\local\ScriptSharpDemo\Scripts\Scripts.csproj”中文件“C:\Program Files(x86)\ScriptSharp\v1.0\ScriptSharp.targets”中的目标“AfterCompile”(目标“编译”取决于此): 任务“脚本编译器任务” 已完成执行任务“ScriptCompilerTask”--失败。 已完成在项目“Scripts.csproj”中构建目标“AfterCompile”--失败 。。这并不能告诉我全部情况 有几次我成功地创建了这种类型的类,然后成功地构建了它,但大多数情况下我可以非常可靠地重现这个问题C# 脚本和编译器问题,c#,visual-studio-2010,compiler-construction,script#,C#,Visual Studio 2010,Compiler Construction,Script#,我刚刚在VS2010和脚本#方面遇到了一个非常奇怪的问题,大多数时候我都能够重新创建它 在我的简单场景中,我的解决方案中有2个项目;一个标准的Asp.Net MVC2 Web应用程序和一个脚本#jQuery类库。我创建了一个静态类(属性为[Imported]),上面有一个静态方法,目的是我可以在代码中将这个类映射到一个外部Javascript库,如文档中所述 然而,似乎每当我用[IgnoreNamespace]来装饰这样一个类以实现这一目标时,项目都会停止成功编译,但不会给我任何关于失败原因的反
在这一点上,我倾向于认为错误在于脚本#,但我只想确认这一点,并找到可能的解决方法(如果有)。为了防止任何人出现类似问题,我找到了问题的原因 使用此方法添加类或从另一个项目复制文件以在脚本#中使用时,这会导致向项目添加对System.dll的引用。这(可以理解)会导致项目停止编译而不会出错
如果有这样的警告或者脚本#能够在出现这种情况时以某种方式进行检测和/或在我使用“添加类”或导入文件时创建新模板,那就太好了,但这只是一个方便的问题,至少现在我可以通过删除此引用轻松地重新编译项目。在尝试重新构建项目时,我遇到了以下可能的解决方案:
- “Home\HomePage.cs”和“Shared\Utility.cs”不得删除,并保留在最初创建的位置
- “Home\HomePage.cs”和“Shared\Utility.cs”必须是“*.csproj”-文件中的最后一个条目。在它们之后,不应跟随任何“Compile”标记
- 对“Script.Literal”的有问题的调用可能会导致静默失败-在使用参数(如
)时尤其要小心Script.Literal(“{0}.doFoo()”,variable)
- 当格式参数无效时,“String.Format”似乎也是如此
- 名称空间和文件夹似乎会导致许多问题,将所有类放在同一名称空间中,将所有类放在同一文件夹中可能会有所帮助