2017-11-29 12 views
0

나는 asp.net 코어 2.0 웹 응용 프로그램을 가지고 있습니다. AppVeyor를 사용하여 octopack과 함께 nuget 패키지를 만들려고 시도하고 있습니다. 따라서 octopus 서버가 배포 프로세스를 처리 할 수 ​​있습니다.AppVeyor Octopack - GetAssemblyVersion 실패

나는 복원 nuget 수행하고 게시 내 appveyor.yml 파일에 나열된 다음 단계가 있습니다,

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가 실행될 때 같은 명령을 실행할 때는 그렇지 않습니다.

UPDATE # 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에서 동일한 명령을 수동으로 실행하면 작동합니다.

답변

1

그래서 Octopack Nuget 패키지가 .net 핵심 프로젝트에서 작동하도록 업데이트되지 않았 음을 Octopus Deploy의 응답에서 확인했습니다.

일단 패키지를 제거하면 문어 도구가있는 빌드와 패키지가 잘 작동합니다. 다음은 내 프로젝트에서 수행 한 모든 단계입니다.

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