繁体   English   中英

生成时,.NET Core csproj PublishProfileName具有一个值

[英].NET Core csproj PublishProfileName has a value when building

我正在使用以下示例来动态生成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的双重修改?

我想要的是一种检测发布(相对于构建)的方法,以避免两次修改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>

这样可以确保在通过FileSystem在VS中发布项目时,它只会once in build执行once in build目标once in build而不是twice in build and publish执行twice in build and publish 我不确定为什么要根据上面提到的文章设置AfterTargets="Build" ,它可能是BeforeTargets="Build"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM