[英]AppVeyor Octopack - Failing GetAssemblyVersion
我有一個asp.net core 2.0網絡應用程序。 我正在嘗試使用AppVeyor與octopack一起構建nuget包,以便我們的octopus服務器可以處理我們的部署過程。
我在appveyor.yml文件中列出了以下步驟以進行nuget還原和發布:
before_build:
- cmd: choco install octopustools
- cmd: nuget restore
- cmd: dotnet restore MyApp/MyApp.csproj
- cmd: dotnet publish MyApp/MyApp.csproj --output published-app --configuration=%CONFIGURATION%
- cmd: octo pack --id MyApp --version %APPVEYOR_BUILD_VERSION% --basePath MyApp/published-app
但是,當構建到達站點的dotnet publish
時,它將失敗並顯示以下錯誤:
dotnet publish MyApp/MyApp.csproj --output published-app --configuration=%CONFIGURATION%
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
SendGrid.NetCore -> C:\projects\MyApp\SendGrid.NetCore\bin\Release\netcoreapp2.0\SendGrid.NetCore.dll
MyApp -> C:\projects\MyApp\MyApp\bin\Release\netcoreapp2.0\MyApp.dll
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: The "GetAssemblyVersionInfo" task failed unexpectedly. [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: File name: 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: at OctoPack.Tasks.GetAssemblyVersionInfo.Execute() [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__25.MoveNext() [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: [C:\projects\MyApp\MyApp\MyApp.csproj]
C:\Users\appveyor.nuget\packages\octopack\3.6.3\build\OctoPack.targets(47,5): error MSB4018: [C:\projects\MyApp\MyApp\MyApp.csproj]
Command exited with code 1
我不確定為什么找不到octopack目標,因為我正在安裝最新的octopustools,並且目標應基於引用項目。
更新:我已經將RDP集成到構建服務器中,並且能夠從Powershell控制台成功運行命令,並且這些命令都已成功。 以下是命令以及運行這些命令的結果:
PS C:\projects\MyApp> dotnet publish MyApp/MyApp.csproj --output published-app --configuration=Release
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
SendGrid.NetCore -> C:\projects\MyApp\SendGrid.NetCore\bin\Release\netcoreapp2.0\SendGrid.NetCore.dll
MyApp -> C:\projects\MyApp\MyApp\bin\Release\netcoreapp2.0\MyApp.dll
MyApp -> C:\projects\MyApp\MyApp\published-app\
這是octopack步驟:
PS C:\projects\reportal> octo pack --id Reportal --version 2.2.2.2 --basePath Reportal/published-app
Octopus Deploy Command Line Tool, version 4.27.0
Packing Reportal version "2.2.2.2"...
Saving "Reportal.2.2.2.2.nupkg" to "C:\projects\reportal"...
Done.
*因此,這時我迷失了為什么在Appveyor上運行命令失敗的原因,但是當RDP進入同一台機器上運行相同的命令時,我卻迷失了。
更新#2:我現在已經意識到這些命令應該以ps(powershell)命令運行,沒有標准的cmd(bash)命令運行。 我改正了
before_build:
- ps: echo buildNumber= $env:appveyor_build_number
- ps: echo configration= $env:configuration
- ps: choco install octopustools
- ps: choco install bower
- ps: nuget restore
- ps: dotnet restore MyApp/MyApp.csproj
- ps: dotnet publish MyApp/MyApp.csproj --output published-app --configuration $env:configuration
- ps: octo pack --id Reportal --version $env:appveyor_build_number --basePath MyApp/published-app
但是輸出仍然返回與上面顯示的octopack目標相同的錯誤。 這些命令正是我在RDP會話中運行它們的方式,它們正在正確構建和打包。 因此迷失了這種自動構建失敗的原因,但是可以手動從RDP運行相同的命令。
因此,我從Octopus Deploy得到了一個響應,即Octopack nuget軟件包未更新為可與.net核心項目一起使用。
刪除軟件包后,使用章魚工具進行的構建和打包就可以了。 以下是適用於我的項目的完整步驟:
build_script:
- ps: choco install octopustools --no-progress
- ps: choco install bower --no-progress
- ps: dotnet restore
- ps: dotnet publish MyApp/MyApp.csproj --output published-app --configuration $env:configuration
- ps: octo pack --id MyCompany.MyApp --version $env:appveyor_build_version --basePath MyApp/published-app
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.