我们正在使用一个库,每个版本都需要在web.config中更新一个值。有没有办法做到这一点本地?是否有一种本地方式来动态更改构建web.config设置?
我们使用具有在web.config
版本属性需要构造每个更新的自定义配置部分库。增量或甚至DateTime.Now等效将工作。
<clientDependency version="6">
...
</clientDependency>
我们正在使用一个库,每个版本都需要在web.config中更新一个值。有没有办法做到这一点本地?是否有一种本地方式来动态更改构建web.config设置?
我们使用具有在web.config
版本属性需要构造每个更新的自定义配置部分库。增量或甚至DateTime.Now等效将工作。
<clientDependency version="6">
...
</clientDependency>
您应该首先回顾一下,为什么每个构建的配置都会发生变化。这似乎并不好。也许你可以改变这一点。
但是,在Visual Studio 2013中引入了Gulp Task Runner。
你可能会滥用它一点点。
Basicly:
Write a *.config
file上every build,其仅包括改变设置。
在你的web.config
你include*.config
。
首先,这既不奇怪也不坏。 *有*不同的版本(Release vs Debug)和环境(Development vs Testing vs Staging vs Production)。其次,这已经在* deployment *管道中可用。您*可以*在每个构建*和*环境中应用不同的转换。没有必要使用外部工具。 –
实际上,不仅Visual Studio支持此功能,还支持Octopus Deploy,Release Management Services等部署工具,以便更轻松地部署到不同的环境。 –
@PanagiotisKanavos您可以提供一个示例,说明如何在每个环境中增加该值建立?我知道如何用变换替换为静态值 – user3953989
您可以尝试使用MSBuild Tasks。
也许XMLPoke更新web.config
与格式化的日期/时间字符串:
<Target Name="EchoTime">
<Time Format="yyyyMMddHHmmss">
<Output TaskParameter="FormattedTime" PropertyName="currentTime" />
</Time>
<Message Text = "$(currentTime)" />
</Target>
<Target Name="UpdateWebConfig">
<XmlPoke
XmlInputPath="web.config"
Query="//<complete-path>/clientDependency/@version"
Value="$(currentTime)" />
</Target>
移动更新部分到外部文件,使用configSource
也可以使工作更容易。
你能提出需要更新的内容吗?为什么?这种接缝不是最佳实践。然而,使用新的任务运行资源管理器和[配置“包含”功能](https://stackoverflow.com/questions/10300063/can-i-create-config-file-and-include-it-to-web-config )它可能是可能的。 –
对于dev/test/prod等不同的连接字符串或凭证,您可以使用web config变换,但如果它是像构建#那样更改每个构建的东西,则可能需要执行后处理任务来操作配置文件。 –
如果你的意思是改变* deploy *而不是build,你可以做转换。选中此项:[如何在部署Web应用程序项目时转换Web.config](https://msdn.microsoft.com/en-us/library/dd465318(v = vs.100).aspx) –