簡體   English   中英

AppVeyor Octopack-GetAssemblyVersion失敗

[英]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.

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