问题描述
我仅在Azure DevOps上有问题!
当我右键单击并生成时,它在Visual Studio 2019中工作正常。 如果我从本地使用CMD的dotnet构建,它也可以正常工作。
Nuget软件包如下所示:
csproj
<ItemGroup>
<None Include="Utilities.Api.xml" Pack="true" PackagePath="File">
<copyToOutputDirectory>PreserveNewest</copyToOutputDirectory>
</None>
<None Include="build\Utilities.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上运行管道时,我通过“ dotnet build”使用此版本的MSBuild(Microsoft(R)Build Engine版本(对于.NET为16.7.0 + 7fb82e5b2)。
管道构建步骤:
- 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
这开始令人沮丧:)
解决方法
Azure Devops Build步骤中的日志:
2020-10-01T08:49:43.2627436Z [command]C:\ag1\_w\_tool\dotnet\dotnet.exe build C:\ag1\_w\16\s\src\Users.Api\Users.Api.csproj "-dl:CentralLogger,\"C:\ag1\_w\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.175.0\dotnet-build-helpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"*ForwardingLogger,\"C:\ag1\_w\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.175.0\dotnet-build-helpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"" --configuration Release /p:reportanalyzer=true /p:TreatWarningsAsErros=True
2020-10-01T08:49:43.6522165Z Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET
2020-10-01T08:49:43.6522892Z Copyright (C) Microsoft Corporation. All rights reserved.
2020-10-01T08:49:43.6523107Z
2020-10-01T08:49:44.1610081Z Determining projects to restore...
2020-10-01T08:49:44.7025130Z All projects are up-to-date for restore.
2020-10-01T08:49:45.5019137Z Users.DomainServices.Public -> C:\ag1\_w\16\s\src\Users.DomainServices.Public\bin\Release\netcoreapp3.1\barfoo.Users.DomainServices.Public.dll
2020-10-01T08:49:45.6746889Z Users.Infrastructure.Public -> C:\ag1\_w\16\s\src\Users.Infrastructure.Public\bin\Release\netcoreapp3.1\barfoo.Users.Infrastructure.Public.dll
2020-10-01T08:49:45.8373672Z Users.DomainServices -> C:\ag1\_w\16\s\src\Users.DomainServices\bin\Release\netcoreapp3.1\barfoo.Users.DomainServices.dll
2020-10-01T08:49:46.1381732Z Users.Infrastructure -> C:\ag1\_w\16\s\src\Users.Infrastructure\bin\Release\netcoreapp3.1\barfoo.Users.Infrastructure.dll
2020-10-01T08:49:46.3793169Z Users.Api -> C:\ag1\_w\16\s\src\Users.Api\bin\Release\netcoreapp3.1\barfoo.Users.Api.dll
2020-10-01T08:49:46.3979376Z
2020-10-01T08:49:46.3980068Z Build succeeded.
2020-10-01T08:49:46.3980389Z 0 Warning(s)
2020-10-01T08:49:46.3981116Z 0 Error(s)
,
好的,我找到了解决方案。有意义。
此行为的原因是,我只为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>