![](/img/trans.png)
[英]Invalid value for 'AssemblyVersion' when building valid csproj
[英].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.