#azure-devops #nuget-package #build-pipeline
#azure-devops #nuget-package #сборка-конвейер
Вопрос:
У меня проблема только с Azure DevOps!
Он отлично работает в Visual Studio 2019, когда я щелкаю правой кнопкой мыши и создаю. Он также отлично работает, если я использую сборку dotnet из CMD локально.
Пакет Nuget выглядит следующим образом:
csproj
<ItemGroup>
<None Include="Utilities.Api.xml" Pack="true" PackagePath="File">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="buildUtilities.Api.props" Pack="true" PackagePath="build"></None>
</ItemGroup>
<ItemGroup>
<None Update="Utilities.Api.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
файл реквизита
<Project>
<Target Name="CopyFilesToProject" BeforeTargets="Build">
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..File*.xml*"/>
</ItemGroup>
<Copy
SourceFiles="@(SourceScripts)"
DestinationFolder="$(OutDir)"
/>
</Target>
</Project>
Когда я запускаю конвейер в Azure, я использую эту версию MSBuild (версия движка сборки Microsoft (R) (16.7.0 7fb82e5b2 для .NET) через «сборку dotnet».
этап сборки конвейера:
- task: DotNetCoreCLI@2
displayName: Build
timeoutInMinutes: 0
inputs:
command: build
projects: src/**/*.csproj
arguments: '--configuration $(BuildConfiguration) /p:reportanalyzer=true /p:TreatWarningsAsErros=$(warnAsErrors)'
У меня есть шаг публикации после моей сборки.
- task: DotNetCoreCLI@2
condition: and(succeeded(), not(variables.RunSonar))
displayName: Publish and zip artifacts
inputs:
command: publish
publishWebProjects: false
arguments: '--configuration $(buildConfiguration) --no-build --output $(Build.ArtifactStagingDirectory)'
packDirectory: '$(Build.ArtifactStagingDirectory)'
zipAfterPublish: true
projects: |
src/**/*.Api.csproj
!src/Test/**/*.csproj
Это начинает сильно расстраивать 🙂
Комментарии:
1. Вы пробовали
dotnet msbuild
command learn.microsoft.com/en-us/dotnet/core/tools/dotnet-msbuild ? Вам нужно использоватьcustom
command вDotNetCoreCLI@2
task.2. Можете ли вы добавить журналы своего
Build
шага?3. Вы хотите видеть только журналы из Azure devops?
4. да, только для Azure DevOps
Ответ №1:
Хорошо, я нашел решение. Что имеет смысл.
Причиной такого поведения было то, что у меня были только цели для BeforeBuild. Мне также пришлось добавить цель для публикации.
Мой файл props теперь выглядит следующим образом, и он работает как локально, так и на Azure DevOps.
<Project>
<Target Name="CopyFilesToProject" BeforeTargets="BeforeBuild">
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..File*.xml*"/>
</ItemGroup>
<Copy
SourceFiles="@(SourceScripts)"
DestinationFolder="$(OutDir)" />
</Target>
<Target Name="PublishCopyFiles" AfterTargets="Publish">
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..File*.xml*"/>
</ItemGroup>
<Copy
SourceFiles="@(SourceScripts)"
DestinationFolder="$(PublishDir)" />
</Target>
</Project>