C# 自动生成的文件(Silverlight*.g.i.cs文件)不';启用“将警告视为错误”时似乎被忽略

C# 自动生成的文件(Silverlight*.g.i.cs文件)不';启用“将警告视为错误”时似乎被忽略,c#,visual-studio-2010,silverlight-4.0,static-analysis,C#,Visual Studio 2010,Silverlight 4.0,Static Analysis,我试图成为一名优秀的开发人员,并启用将警告视为错误(就像我过去一直做的那样)。最大的区别是,这次我使用的是Silverlight 4,它生成了大量的代码。所有代码都是这样开始的: #pragma checksum <some stuff> //------------------------------------------------------------------------------ // <auto-generated> // This code

我试图成为一名优秀的开发人员,并启用将警告视为错误(就像我过去一直做的那样)。最大的区别是,这次我使用的是Silverlight 4,它生成了大量的代码。所有代码都是这样开始的:

#pragma checksum <some stuff>
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//---------
#pragma校验和
//------------------------------------------------------------------------------
// 
//这段代码是由一个工具生成的。
//运行时版本:4.0.30319.1
//
//对此文件的更改可能会导致不正确的行为,如果
//重新生成代码。
// 
//---------

但是,将警告视为错误不会忽略它。我的印象是,包含这样的头会导致文件被忽略。显然,我错了。有人有(干净的)建议吗?

好的,因此,至少在我的例子中,来自生成文件的唯一警告是由于我创建了一个自定义的基本Silverlight页面,我的页面继承了该页面。您可以通过从项目中删除XAML文件并将XAML.cs代码隐藏文件重新添加回项目,来修复由此类方案导致的编译器警告问题。这会导致未定义LayoutRoot,并且代码生成器不会为此基类生成InitializeComponent方法。希望这也能帮助其他人

当我从解决方案目录中删除所有BIN和OBJ文件夹时,我也遇到了同样的问题(为了使源文件的备份文件更小)


我将项目属性中的目标Silverlight版本从SL4更改为SL3,然后切换回SL4。这对我很有效。

我花了很长时间才找到一个可接受的解决方案,但这比更改目标Silverlight版本要好得多

如中所述,解决方法是在生成之前删除所有*.g.i.cs文件

这里有一个F#脚本来实现这一点(如MSDN解决方案部分所示):

这就解决了这个错误。下次它出现时,我所要做的就是执行一个文件,该文件将清除我的项目文件夹中的所有g.I.cs文件


编辑:我升级到Silverlight 5,并再次出现此问题。这里列出的建议都不起作用(切换到SL4,然后返回到SL5,或者只删除g.i.cs文件)-但是删除Silverlight项目的BIN和OBJ文件夹就成功了。

不,编译器不分析注释。我的问题与编译器无关。它与静态代码分析工具有关。此工具通常与编译一起运行,但可以使用注释执行任何操作。。。包括告诉你他们缺少方法等等。嗨,谢谢你的帮助。对于Silverlight 5,您仍然可以使用脚本,但您还需要删除生成的后缀为.g.cs.:)的文件
open System
open System.IO

let deleteUserFile file =
    printfn "%s" file
    File.Delete(file)

Directory.GetFiles( @".", "*g.i.cs", SearchOption.AllDirectories )
|> Array.iter deleteUserFile