Я использую пакет Microsoft.VisualStudio.SLowCheetah (v3.0.61) для преобразования нескольких файлов конфигурации в версию выпуска во время сборки.
Недавно я перенес все проекты в решении из packages.config вформат ссылки на пакет.После этого преобразования, выполненные SlowCheetah, прервались на сервере сборки.В случае локальной публикации в файловой системе из Visual Studio 2017 (v 15.6.7) все работает нормально.Ранее все цели из SlowCheetah были импортированы напрямую в конец файла
*. Csproj
.При использовании ссылочного пакета все цели из используемых пакетов объединяются в файл
obj / PROJECTNAME.csproj.nuget.g.targets
.Эта проблема касается только веб-проекта.(Преобразования для файлов App.config в проектах с интеграционными тестами работают нормально.)
Я использую следующую команду на сервере сборки для восстановления пакетов:
nuget.exe restore "C:\PATH\Web.Site.sln" -Verbosity Normal -NonInteractive -ConfigFile C:\PATH\NuGet.Config
И следующую для сборкирешение:
msbuild.exe "C:\PATH\WizNG.App.Site.sln" /nologo /nr:false /p:DeployOnBuild=true /p:PublishProfile="FileSystem.pubxml" /p:platform="any cpu" /p:configuration="release" /p:VisualStudioVersion="15.0" /m /verbosity:normal
Фрагмент файла csproj с файлами конфигурации:
<Content Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</Content>
<None Include="NLog.Debug.config">
<DependentUpon>NLog.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="NLog.Local.config">
<DependentUpon>NLog.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="NLog.Release.config">
<DependentUpon>NLog.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<Content Include="Myconfig1.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</Content>
<None Include="Myconfig1.Local.config">
<DependentUpon>Myconfig1.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="Myconfig1.Release.config">
<DependentUpon>Myconfig1.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="Myconfig1.Debug.config">
<DependentUpon>Myconfig1.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
Я использую MSBuild v 15.0
ОБНОВЛЕНИЕ 1
*. Файл csproj содержит следующие импортные данные:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
После некоторого расследования я заметил, что в случае изменения порядка импорта с
Microsoft.CSharp.targets
Microsoft.WebApplication.targets
на
Microsoft.WebApplication.targets
Microsoft.CSharp.targets
преобразование начинает работать.
Имеет ли это изменение какое-то другое влияние?