MSBuild - 忽略MSB3270錯誤

在電腦上執行的應用程式可分為x86x64架構,有許多函式庫針對不同架構會有不同版本,所以在Visual Studio開發時要慎選平台架構,像限量工作的Project主要為x64架構,當限量使用x64Oracle.DataAccess DLL,所以在Build的時候會發生警告,要我在專案組態設定那將專案改為x64專案,但基於某些原因,又不想改組態設定,每次警告看了又煩,以下為警告訊息。


警告訊息:

warning MSB3270: 建置 "MSIL" 之專案的處理器架構與參考 "Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64" 的處理器架構 "AMD64" 不符。這可能會導致執行階段失敗。請考慮透過 [組態管理員] 變更專案的目標處理器架構,使專案與參考之間的處理器架構對應,或者使用符合專案目標處理器架構之處理器架構的參考相依性。

warning MSB3270: 建置 "MSIL" 之專案的處理器架構與參考 "D:\Framework\Codes\Assemblies\AppDlls\Debug\Infrastructure.dll" 的處理器架構 "AMD64" 不符。這可能會導致執行階段失敗。請考慮透過 [組態管理員] 變更專案的目標處理器架構,使專案與參考之間的處理器架構對應,或者使用符合專案目標處理器架構之處理器架構的參考相依性。

每次看到這麼又臭又長的訊息都會眼花,又怕真的錯誤藏在裡面,這時候就要用以下解法把這個煩人的問題除掉。

解決方法:
在檔案總管找到出現警告的專案,然後找到它的.csproj檔,接著用文字編輯器(記事本或Notepad++...)打開.csproj檔,這時候你會看到一堆密密麻麻的XML格式資料,在Project Tag裡頭加入以下屬性:

<!-- Hide MSB3270 Warning -->
  <PropertyGroup>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
      None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
  </PropertyGroup>
<!-- Hide MSB3270 Warning -->

可以參考.csproj檔裡的PropertyGroup如何寫,位置可以放在PropertyGroup附近。加完後儲存再重新建置專案,可以發現警告不見了。


參考資料:

留言