簡體   English   中英

在引用NetStandard20程序集的Framework461解決方案上使用MSBUILD

[英]Using MSBUILD on a Framework461 solution that references a NetStandard20 assembly

我什至不確定我想做的事情是否可能...

示例代碼: 此處

基本上,我已經建立了一個netstandard20類庫,根據.NET實現支持列表,該庫應該與framework461項目兼容(前提是您擁有.NET Core 2.0 SDK)。

在此處輸入圖片說明

我可以毫無后顧之憂地建立netstandard20類庫,並重新獲得DLL(它包含在示例代碼中)。

這是問題開始的地方,當嘗試運行msbuild .\\netstandard_test.sln來構建framework461項目時,我收到一堆關於(未誤)“ netstandard”的錯誤(我認為是誤導性的)。

在此處輸入圖片說明

但是,如果我運行dotnet build (或從VS2017構建),則一切正常。

我嘗試導入各種版本的NetStandard,NetStandard.Library和NetStandard.Library.Framework,以及引用Microsoft.DotNet.BuildTools,但這似乎沒有幫助。

有什么方法可以使用msbuild來構建它嗎? 我們有一個整體的構建和部署過程,如果可以避免的話,我寧願不必更改它。 誰知道還有什么地方會出錯!

要使用.NET Core或.NET Standard進行構建,您需要使用.NET Core SDK中的dotnet msbuild命令 ,而不僅僅是簡單的msbuild

dotnet msbuild .\netstandard_test.sln /p:Configuration=Release

這也將與.NET Framework 4.6.1(和較舊版本)一起使用。

請注意,Microsoft提供了安裝腳本,以使在連續集成服務器上輕松安裝.NET Core SDK變得容易。

您需要使用MSBuild的最新15. *版本(當前為15.5。*),並確保Visual Studio中安裝了“跨平台開發”工作負載。 這將添加所需的組件以定位.NET Core SDK,其中包含MSBuild SDK,如.NET Standard和.NET Core項目使用的Microsoft.NET.SdkMicrosoft.NET.Sdk.Web

然后,您可以在開發人員命令提示符下使用msbuild來構建這些項目。 我建議添加/restore (msbuild> = 15.5。*),以確保基於sdk的項目發生NuGet還原。

由於VS 2017未安裝MSBuild的“全局”版本,因此請確保使用VS 2017文件夾中安裝的MSBuild版本(請使用msbuild /versionwhere msbuild )。

當您使用包含文件引用或非字符串屬性的.resx文件時, dotnet msbuild具有局限性。 另外,它不支持COM引用或構建強命名程序集。 如果需要這些功能中的任何一個,請通過dotnet msbuild (.NET Core CLI)使用msbuild (VS 2017)

暫無
暫無

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

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