參考和平台之間的 Visual Studio 衝突
由於我為 C# ASP.Net 項目將目標框架升級到 4.6.1,因此在建構過程中會收到很多衝突警告。50 多條消息,例如:
考慮從版本“0.0.0.0”重新映射程序集“System.Runtime.InteropServices.RuntimeInformation, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
$$ $$到版本“4.0.2.0”$$ C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.RuntimeInformation.dll $$解決衝突並消除警告。
它們都與 .NET 系統庫有關。我當然可以重新映射所有引用,但不知何故我認為這不是正確的解決方案。如果我使用輸出“詳細”重建,我會得到更多資訊:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.ConflictResolution.targets(33,5):消息 NETSDK1041:遇到“參考:System.Runtime.InteropServices.RuntimeInformation,版本=4.0.1.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a,處理器架構=MSIL”和“參考:System.Runtime.InteropServices.RuntimeInformation”之間的衝突。NETSDK1033:選擇 ‘Reference:System.Runtime.InteropServices.RuntimeInformation’ 因為 AssemblyVersion ‘4.0.2.0’ 大於 ‘4.0.1.0’。
不知何故,文件夾 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.1 和 C:\Program Files (x86)\Microsoft Visual Studio 中的 .NET 框架之間似乎存在版本衝突\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib。
我不知道如何確保它使用來自同一個地方的引用。任何人都可以幫忙嗎?
參考和平台之間的 Visual Studio 衝突
似乎是因為:
這是由於對 NETStandard 2.0 的注入支持。我們將新程序集注入 NET 4.6.1 及更高版本的桌面項目,以增加對 netstandard2.0 的支持。我們現在在目標而不是包中執行此操作,因為它不再需要引用包來建構網路標準庫。每當我們看到引用了 netstandard1.5 或更高版本的庫時,就會發生這種注入(參見 dotnet/sdk#1386)。
要解決此問題,您可以將綁定重定向添加到這些引用。
檢查從 MSBuild 工具複製/載入的 System.Net.Http v4.2.0.0 以了解更多詳細資訊。
希望這可以幫助。