Преобразование файла конфигурации не работает на сервере сборки после перехода на ссылочный формат пакета - PullRequest
0 голосов
/ 11 мая 2018

Я использую пакет 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 

преобразование начинает работать.

Имеет ли это изменение какое-то другое влияние?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...