Мы создали проект в Visual Studio, где мы используем ссылки на пакеты NuGet. Для одного из пакетов NuGet мы устанавливаем для свойства GeneratePathProperty значение true, чтобы мы могли скопировать файлы из расположения пакета NuGet в папку «Выходной лоток» нашего проекта
. Он настроил файл .csproj, как показано ниже:
<PackageReference Include="ilmerge" GeneratePathProperty="true">
<Version>3.0.29</Version>
</PackageReference>
<None Include="$(Pkgilmerge)\tools\net452\ILMerge.exe">
<Link>ILMerge.exe</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="$(Pkgilmerge)\tools\net452\System.Compiler.dll">
<Link>System.Compiler.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
Это прекрасно работает локально (с использованием Visual Studio 2019) - компиляции проекта и файлы копируются в папку bin, однако в нашем конвейере сборки используется агент, размещенный windows -2019 (который также должен иметь VS 2019 в соответствии с документацией https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md), это не выполняется во время задачи сборки:
[ошибка] C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets (4601,5): Ошибка MSB3030: не удалось скопировать файл 'd: \ tools \ net452 \ ILMerge.exe', так как он не был найден.
[ошибка] C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets (4601,5): ошибка MSB3030: не удалось скопировать файл ' d: \ tools \ net452 \ System.Compiler.dll ', поскольку он не был найден.
Определение сборки имеет следующие задачи
steps:
- task: NuGetToolInstaller@0
- task: NuGetCommand@2
displayName: 'Restore Nugets'
inputs:
restoreSolution: '$(solutions)'
vstsFeed: 'Project-Packages'
- task: VSBuild@1
inputs:
solution: '$(solutions)'
platform: 'Any CPU'
configuration: 'Release'
logProjectEvents: false
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.StagingDirectory)'
artifactName: $(pluginName)
condition: always()
Любые идеи о том, что может быть проблемой или что мы нужно изменить, чтобы в Azure DevOps работала сборка?
Позже Редактировать: я добавил некоторые записи
<Target Name="¨ReMerge" AfterTargets="ILRepacker" >
<Message Text="Remerging Assemblies using ILMerge from $(Pkgilmerge) and setting AssemblyVersion = 2.0.0.0" Importance="High" />
<Exec Command="dir $(Pkgilmerge)"></Exec>
<Exec Command="$(Pkgilmerge)\tools\net452\ILMerge.exe /ver:2.0.0.0 /out:$(TargetDir)$(TargetName)Merged.dll /keyfile:$(ProjectDir)Zurich.Zkp.Key.snk $(TargetDir)$(TargetName)MergedTemp.dll"></Exec>
</Target>
И кажется, что в AzureDevops $ (Pkgilmerge) пусто
Спасибо