c# - 目标确实存在时出现 StyleCop CA0055 问题

标签 c# visual-studio-2010 stylecop

与另一个类似的问题一样,我在构建时遇到了两个 StyleCop 错误:

CA0052:未选择目标。

CA0055:无法加载 [主 exe 的路径...]

但是,与其他问题不同的是,在我的开发机器上重新格式化和重新安装所有内容并没有解决它。我们正在运行带有 SP1 的 Visual Studio 2010,目标是 Dotnet 4.0。

不过,这里还有一个细节可以帮助其他人找出问题所在:

我还尝试在 Visual Studio 2012 RTM 下构建解决方案,我得到了第二条错误消息的更详细版本 -

CA0055  Error Running Code Analysis 

CA0055 : Could not load C:\Users\UserName\SourceCode\ProjectName\Debug\xxx.exe. 
The following error was encountered while reading module 'System.Windows.Forms': 
Could not resolve type reference: [System.Drawing, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a]System.Drawing.BitmapSuffixInSatelliteAssemblyAttribute.

[Errors and Warnings]

(Global)

有人知道吗?没有其他人收到此错误,因此这在我自己的设置中无疑是一件奇怪的事情,而且我在重新铺设我的机器时无意中复制了它。但是……什么?

最佳答案

我找到了两种解决此问题的方法,但没有任何 Microsoft 文档的帮助。线索在 VS 2012 的附加错误报告中 - StyleCop 无法找到 System.Drawing 程序集。

修复 #1:从 .csproj 文件中删除 HintPath 元素,告诉项目在哪里可以找到 Windows.Forms 程序集:

<Reference Include="System.Windows.Forms"> 
    <!--<HintPath>..\..\..\..\..\..\..\..\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</HintPath>-->
</Reference>

修复#2:添加 System.DrawingHintPath 元素包含在 .csproj 文件中:

<Reference Include="System.Drawing">
    <HintPath>..\..\..\..\..\..\..\..\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</HintPath>
</Reference>

第一个选项对我来说效果更好,因为提示没有特别的原因。 MSBuild 能够在没有它的情况下找到程序集,这是多余的,因为目标类型设置为框架的 4.0 版本。

关于c# - 目标确实存在时出现 StyleCop CA0055 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12045251/

相关文章:

visual-studio-2010 - 如何使用 VS 安装项目(或根本没有!)部署 SharePoint BDC 模型包

c++ - 本地禁用填充

c# - 无法获得在 VS2010 中使用 IISOle 对象的引用

c# - 来自 VS2010 的 StyleCop 的异常类型不是足够具体的错误

c# - 有没有可以自动清理 GlobalSuppressions.cs 的工具?

c# - 使用 AES 在 C# 中安全传输文件

c# - 在更新语句中使用左连接 where is null

c# - 在 C# 中如何创建和释放 PropertyChangedEventHandler

c# - 在 XamarinForms 应用程序中使用 Android 定位服务

c# - 使用哪个 StyleCop 包