【.Net Core】命令行編譯DotNet Core項目問題彙總

問題一: error MSB4236: The SDK ‘Microsoft.NET.Sdk’ specified could not be found

解決方案

添加新變量,值爲.Not SDK目錄,設置成程序中使用的版本的對應目錄,這樣設置後,當MSBuild.exe編譯.Net Core項目時,會自動根據該變量設置需要引用的SDK,參考 issues-2532

變量:MSBuildSDKsPath
值:C:\Program Files\dotnet\sdk\3.1.201\Sdks

在這裏插入圖片描述

問題二: “C:\Microsoft.Cpp.Default.props” was not found

解決方案

添加新變量,值爲Visual Studio中編譯C++項目時所對應的版本。這樣設置後,當MSBuild.exe編譯C++項目時會找到該目錄下的Microsoft.Cpp.Default.props文件,然後設置需要引用的VC包,參考 questions-16092169

變量:VCTargetsPath
值:C:\Program Files (x86)\Microsoft VisualStudio\2019\Enterprise\MSBuild\Microsoft\VC\v160\

在這裏插入圖片描述

問題三: NuGet packages with “native” support

解決方案

默認設置Nuget Restore目錄,則出現該錯誤

msbuild /t:restore -p:RestorePackagesPath=C:\Users\chao9441\.nuget\packages /t:rebuild /p:configuration=release /p:platform=x64 D:\Test\Applications\DotNet\WinDesktop\Apps\arcgis-earth\source\ArcGISEarth.NetCore.sln

這是因爲.Net Core不支持C++項目Nuget包的還原,而上述代碼還原的是整個Solution包括C++項目,所以需要排除掉C++項目,我的做法是設置還原啓動項目,這樣就不會爲C++項目還原Nuget包。參考 NuGet打包並還原爲MSBuild目標

注意:試過爲整個Solution所有的項目添加RestoreGraphProjectInput,但是會出現奇怪的錯誤,所以這裏只添加啓動項目

:: 命令太長使用^換行, 因爲.NetCore項目不支持C++項目還原Nuget包,所以這裏單獨對C#項目還原Nuget包
msbuild /t:restore -p:RestorePackagesPath=C:\Users\chao9441\.nuget\packages^
 -p:RestoreGraphProjectInput=D:\Test\Applications\DotNet\WinDesktop\Apps\arcgis-earth\source\ArcGISEarth\ArcGISEarth.NetCore.csproj^
 /t:rebuild /p:configuration=release /p:platform=x64 D:\Test\Applications\DotNet\WinDesktop\Apps\arcgis-earth\source\ArcGISEarth.NetCore.sln
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章