[英]Visual Studio 2012 Code Analysis Error CA0058
我目前正在開發一個包含多個項目的解決方案,當我嘗試從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
引用版本2.1.505.0
Unity
,具有強名稱,但您有一個較新的版本,與版本3.0.0.0
強烈簽名; 這意味着,這個混亂不是你的錯,只是試圖使用庫版本的“意外”組合,以及FxCop的匯編解析邏輯中的疏忽。
解決該問題的主要方法是將FxCop的AssemblyReferenceResolveMode
設置為StrongNameIgnoringVersion
。 有一些方法可以實現這一點,一個在每台機器上設置,另一個在每個項目設置上。
FxCopCmd.exe.config
(來自VS12調用)或FxCop.exe.config
(命令行調用FxCop.exe
)中將AssemblyReferenceResolveMode
設置為StrongNameIgnoringVersion
; PropertyGroup
XML元素內的每個.csproj
文件中添加一行: <PropertyGroup>
<CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions>
</PropertyGroup>
我建議您為要與其他人共享的任何項目使用每個項目設置。
擺脫這個唯一的解決辦法確實改變FxCopCmd.exe.config從強名稱到StrongNameIgnoreVersion的AssemblyReferenceResolveMode。 我沒有想出任何其他的東西,所以我必須接受它。
我最近也有這個案子。 問題如下:我的項目的調試構建配置引發了針對any CPU
平台的錯誤。 像解決方案中的其他項目一樣將其更改為值x86
已解決了該問題。
可以在Visual Studio中找到這些設置:*右鍵單擊解決方案以打開解決方案資源管理器中的上下文菜單*選擇屬性,加載解決方案屬性頁對話框*您要查找的設置如下: Configuration Properties
>> Configuration
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.