程序集绑定redirect和代码分析
我在Visual Studio 2010的Mvc 3.0.0.0项目中使用DotNetOpenAuth(它引用System.Web.Mvc版本1.0.0.0)。
我正在使用程序集绑定redirect,如下所示:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
一切工作正常,除了代码分析,给了我以下错误: –
CA0001:读取模块X时遇到以下错误:无法parsing程序集引用:System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。
和
CA0058:找不到引用的程序集“System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”。 这个程序集是分析所需要的,并被引用:X.
有没有办法让代码分析工具尊重程序集绑定redirect?
只是为了补充一点更精确的答案:
您需要运行FxCopCmd.exe:
fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion
或者修改每个构buildconfiguration的属性组的Visual Studio项目文件,如下所示:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> ... <CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions> </PropertyGroup>
请参阅http://davesbox.com/archive/2008/06/10/reference-resolution-changes-in-code-analysis-and-fxcop-part-1.aspx和http://davesbox.com/archive/2008 /06/14/reference-resolutions-changes-in-code-analysis-and-fxcop-part-2.aspx了解一些背景信息。
在VS2010 / FxCop 10.0中,为fxcopcmd.exe提供了一个新的/ assemblyCompareMode命令行开关,允许您指定比较模式,而不用考虑.config文件。 您可以使用CodeAnalysisAdditionalOptions MSBuild属性在VS项目中指定此项。
除了peter_raven解决scheme之外,您还可以指定使用TFS构build进行代码分析的选项。 在“MSBuild Arguments”中的build选项,process选项卡,高级类别中添加:
/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion
如果您需要closures代码分析,请使用此function。
在Visual Studio 2012中,
- 右键单击您的项目,然后从popup菜单中select“属性”。
- 点击“代码分析”选项卡,并取消选中“启用代码分析生成”
清洁和build设。 代码分析错误应该消失。