我正在尝试使用 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/