.NET Core csproj PublishProfileName имеет значение при сборке - PullRequest
0 голосов
/ 26 июня 2019

Я использую следующий пример для динамического создания файла Web.config:

https://sebnilsson.com/blog/asp-net-transform-web-config-with-debug-release-on-build/

Изменение включает это в .csproj, который работает в обычном .NET:

<Target Name="BeforeBuild" Condition="'$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == ''">

Однако, когда аналогичная строка используется в .NET Core, она не работает, потому что PublishProfileName на самом деле 'FileSystem'.То, что я хотел бы, - это способ обнаружения публикации (против сборки), чтобы избежать проблемы изменения Web.config дважды.Вот модифицированная часть для .NET Core:

  <Target Name="TestTarget" AfterTargets="Build">
    <Message Importance="High" Text="Firing on publish due to PublishProfile being '$(PublishProfileName)'" />
    <TransformXml Source="Web.Base.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
  </Target>

Кто-нибудь знает, как сделать в ядре .NET то же самое, что было сделано в .NET, чтобы остановить двойную модификацию web.config при динамическом создании?

1 Ответ

1 голос
/ 27 июня 2019

Мне нужен способ обнаружения публикации (вместо сборки), чтобы избежать проблемы изменения Web.config дважды.

Самый простой способ, который я считаю, это использовать Condition="'$(DeployOnBuild)' != 'true'" в вашей цели.Тогда эта цель будет выполнена только во время процесса сборки, но не будет опубликована.

<Target Name="TestTarget" Condition="'$(DeployOnBuild)' != 'true'" AfterTargets="Build">
    <Message Importance="High" Text="Firing on publish due to PublishProfile being '$(PublishProfileName)' and " />
    <!--<TransformXml Source="Web.Base.config" Transform="Web.$(Configuration).config" Destination="Web.config" />-->
  </Target>

Это обеспечит, что при публикации проекта в VS с помощью FileSystem, она будет выполнять только цель once in build вместо twice in build and publish.Я не уверен, почему вы установили AfterTargets="Build", согласно статье, которую вы упомянули выше, это может быть BeforeTargets="Build".

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