Azure devops 在不在Azure DevOps上工作的项目中将文件从NuGet包复制到OutDir

Azure devops 在不在Azure DevOps上工作的项目中将文件从NuGet包复制到OutDir,azure-devops,nuget-package,build-pipeline,Azure Devops,Nuget Package,Build Pipeline,我只有Azure DevOps的问题 在VisualStudio2019中,当我右键单击并构建时,它工作得很好。 如果我在本地使用CMD的dotnet构建,它也可以正常工作 Nuget软件包如下所示: csproj <ItemGroup> <None Include="Utilities.Api.xml" Pack="true" PackagePath="File"> <CopyToO

我只有Azure DevOps的问题

在VisualStudio2019中,当我右键单击并构建时,它工作得很好。 如果我在本地使用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>
在生成之后,我有一个发布步骤

 - 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构建步骤的日志:

  - task: DotNetCoreCLI@2
    displayName: Build
    timeoutInMinutes: 0
    inputs:
      command: build
      projects: src/**/*.csproj
      arguments: '--configuration $(BuildConfiguration) /p:reportanalyzer=true /p:TreatWarningsAsErros=$(warnAsErrors)'
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的目标。我还必须为发布添加一个目标

我的道具文件现在看起来是这样的,它可以在本地和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>


是否尝试了
dotnet msbuild
命令?您需要在
DotNetCoreCLI@2
任务。你能添加你的
构建步骤的日志吗?只是你想查看的azure devops中的日志吗?是的,只从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>