Dot-Net
如何“dotnet pack”一個已經編譯的項目
我正在嘗試為執行以下操作的 dotnet core 2.0 項目設計建構腳本
- 清理輸出目錄
- 使用 -o bin\Publish 建構解決方案
- 使用 dotnet vstest 執行單元測試
- 使用 dotnet pack 創建 Nuget 包
因為我知道原始碼已在步驟 1-3 中建構和測試,所以我不想為 nuget 包重建程式碼,所以我指定 –no-build 和 –no-restore
我遇到的困難是在創建包時,因為我沒有建構並且輸出目錄設置為 bin\Publish - pack 命令正在查找 bin\Debug 目錄中的項目。
有沒有辦法可以設置 dotnet pack 命令以知道在哪裡查找已編譯的對象?
這是我的建構腳本的範例
dotnet clean ..\MySolution.sln -o bin/Publish/ dotnet build ..\MySolution.sln /p:Configuration=Release -o bin/Publish/ dotnet vstest ..\MySolution.UnitTests\bin\Publish\MySolution.UnitTests.dll dotnet pack --no-build --no-restore ..\MySolution.ConsoleApp\MySolution.csproj -o bin\Publish\Nuget\ .... error : The file 'D:\MySolution.ConsoleApp\bin\Debug\netcoreapp2.0\MySolution.ConsoleApp.runtimeconfig.json' to be packed was not found on disk根據dotnet pack 上的 Microsoft Docs
“預設情況下,dotnet pack 首先建構項目。如果您希望避免這種行為,請傳遞 –no-build 選項。這在您知道程式碼之前建構的持續集成 (CI) 建構場景中通常很有用。”
所以我希望這是可能的,我錯過了一些明顯的東西。任何幫助,將不勝感激。
這樣做的原因是該
dotnet pack --no-build選項將嘗試使用先前建構的輸出,但由於您建構到非標準輸出路徑而無法找到它,並且打包邏輯需要定位生成到建構輸出中的一些資產。和命令的
-o選項在內部是不同的,但您可以將 pack 命令更改為:pack``builddotnet pack --no-build --no-restore ..\MySolution.ConsoleApp\MySolution.csproj -o bin\Publish\Nuget\ /p:OutputPath=bin\Publish\這將使用目錄中內置的輸出
bin\Publish並將其放入Nuget輸出目錄中bin\Publish\Nuget\