簡體   English   中英

Visual Studio 2012代碼分析錯誤CA0058

[英]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。

任何想法擺脫這個,可能是錯誤的錯誤? 或者至少有一種解決方法可以忽略它?

根本問題是由於兩個事實的結合:

  1. Prism.UnityExtensions版本4.1.0.0引用版本2.1.505.0 Unity ,具有強名稱,但您有一個較新的版本,與版本3.0.0.0強烈簽名;
  2. 在其默認操作模式下,FxCop堅持程序集名稱必須與引用匹配,包括具有確切的版本號,從而忽略程序集重定向(這是允許程序集組合在運行時工作的唯一因素);

這意味着,這個混亂不是你的錯,只是試圖使用庫版本的“意外”組合,以及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強名稱StrongNameIgnoreVersionAssemblyReferenceResolveMode。 我沒有想出任何其他的東西,所以我必須接受它。

我最近也有這個案子。 問題如下:我的項目的調試構建配置引發了針對any CPU平台的錯誤。 像解決方案中的其他項目一樣將其更改為值x86已解決了該問題。

可以在Visual Studio中找到這些設置:*右鍵單擊解決方案以打開解決方案資源管理器中的上下文菜單*選擇屬性,加載解決方案屬性頁對話框*您要查找的設置如下: Configuration Properties >> Configuration

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM