我正在尝试使用 Microsoft.Bcl.Async 和代码分析,但是运行代码分析时遇到一个或多个错误。
我正在使用Visual Studio 2012 Update 2。
这对我来说很容易重现:

  • 创建一个针对.Net 4的新默认控制台应用程序。
  • 右键单击References,然后选择Manage NuGet Packages...
  • 单击Online,然后在async框中键入Search Online
  • 您应该看到Async for .Net Framework 4 ...。单击Install并接受所有问题。
  • Main()中添加以下行:TaskEx.Delay(1000);using System.Threading.Tasks;
  • 转到项目属性的“代码分析”部分,然后勾选Enable Code Analysis on Build
  • 编译程序。

  • 我收到两个代码分析错误:

    对于其他测试程序,我得到了不同的代码分析错误。我尝试过的基本Windows Forms应用程序为我提供了:

    两个问题:
  • 其他任何人都可以重现此问题吗?
  • 有人有解决方案吗?
  • 最佳答案

    如Nicole所述,这是因为Code Analysis/FxCop强制要求强名称(包括版本)完全匹配。对于.NET Framework,此行为才有意义,直到您开始考虑绑定(bind)重定向(或其他平台,例如Store,Phone和Silverlight,它们始终允许程序集的更高版本与早期版本匹配)之前,FxCop不会考虑。

    我在FxCop中编写了此原始行为,并且在针对正确性和实际情况进行了过度优化。当时,除了通过App.Config之外,我们没有其他选择。但是,幸运的是,在我离开团队后,团队中的一些聪明人通过命令行和Visual Studio都添加了一个。

    通过命令行:

    FxCopCmd.exe /assemblycomparemode:StrongNameIgnoringVersion ...
    

    通过Visual Studio:
  • 右键单击解决方案资源管理器中的项目,然后选择
    卸载
  • 右键单击解决方案资源管理器中的项目,然后选择编辑
  • 在第一个<PropertyGroup>元素内,添加以下内容:<CodeAnalysisAdditionalOptions> /assemblycomparemode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions>
  • 解决方案资源管理器中右键单击项目,选择重新加载,在出现提示时保存更改。

  • 这仅在Visual Studio 2012及更高版本中有效。

    关于c# - 在代码分析中使用Microsoft.Bcl.Async会导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17298281/

    10-12 04:13