cod*_*815 3 .net c# code-analysis visual-studio visual-studio-2012
我目前正在开发一个包含多个项目的解决方案,当我尝试从VS12运行代码分析工具时,我在尝试运行它时遇到以下错误:
CA0058运行代码分析错误CA0058:找不到引用的程序集"Microsoft.Practices.Unity,Version = 2.1.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35".此程序集是分析所必需的,并通过以下方式引用:C:\ MyProject\bin\Release\MyProject.exe,C:\ MyProject\packages\Prism.UnityExtensions.4.1.0.0\lib\NET40\Microsoft.Practices.Prism.UnityExtensions .dll文件.[错误和警告](全球)
我还有两个错误:
CA0052:未选择任何目标
和
CA0055运行代码分析时出错CA0055:C:\ MyProject\bin\Release\IntraEUA管理软件2.0.exe读取模块"Microsoft.Practices.Prism.UnityExtensions"时遇到以下错误:无法解析程序集引用:Microsoft.Practices. Unity,Version = 2.1.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35.[错误和警告](全球)
但奇怪的是,在我的解决方案中我没有使用ersion 2.1.505.0的UnityExtensions,我使用的是4.1.0.0.甚至更奇怪的是,在此解决方案中的所有其他项目中,使用完全相同的UnityExtensions版本,即使PublicKeyToken在所有其他项目中也是相同的.
我试图在整个解决方案中搜索字符串"2.1.505.0"并没有找到任何内容.所以VS在哪里获取此信息?
顺便说一下,我使用NuGet获得了UnityExtension.并尝试删除并重新安装UnityExtensions,但没有任何效果.我正在使用.NET 4.5.
任何想法摆脱这个,可能是错误的错误?或者至少有一种解决方法可以忽略它?
根本问题是由于两个事实的结合:
Prism.UnityExtensions版本4.1.0.0的参考Unity版本2.1.505.0,具有强大的名字,但你有一个新版本,版本强烈签署3.0.0.0;这意味着,这个混乱不是你的错,只是试图使用库版本的"意外"组合,以及FxCop的汇编解析逻辑中的疏忽.
解决该问题的主要方法是将FxCop设置AssemblyReferenceResolveMode为StrongNameIgnoringVersion.有一些方法可以实现这一点,一个在每台机器设置上,另一个在每个项目设置上.
AssemblyReferenceResolveMode以StrongNameIgnoringVersion在任一FxCopCmd.exe.config(从VS12调用)或FxCop.exe.config(命令行调用FxCop.exe);.csproj内的每个文件中添加一行PropertyGroup:<PropertyGroup>
<CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我建议您为要与其他人共享的任何项目使用每个项目设置.
| 归档时间: |
|
| 查看次数: |
3143 次 |
| 最近记录: |