我已经搜索了几天,我也在cc.net论坛上提出了一个问题,但仍然没有答案。
我的任务是使用cc.net在构建期间使用特定值填充Web.config。这是一个例子:
我正在开发一个ASP.NET网站,我有一个带有一些配置的Web.config,例如连接字符串:
<add name="ContextName" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DatabaseName;User Id = UserName;Password=UserPassword;" providerName="System.Data.SqlClient" />
在构建之后,我想要替换一些值并使配置看起来像这样:
<add name="ContextName" connectionString="Data Source=%SERVER%;Initial Catalog=%DATABASE%;User Id = %USER%;Password=%PASSWORD%;" providerName="System.Data.SqlClient" />
我尝试this solution,但它对我没有帮助(或者我可能不了解如何正确使用它)。
请帮我解决这个任务。
谢谢!
答案 0 :(得分:0)
您可以在构建文件上创建目标以更新web.config并在构建后调用该目标。我在构建文件中使用类似的东西,这是一个例子:
<target name="update-config" >
<property name="export.config" value="" unless="${property::exists('export.config')}" />
<call target="${config-settings}" /> <!-- test or stage -->
<xmlpoke file="${export.config}" xpath="/configuration/appSettings/add[@key='ContextName']/@connectionString" value="${configValue.connectionString}" failonerror="true" />
</target>
<target name="test">
<property name="configValue.connectionString" value="test connection string here" />
</target>
<target name="stage">
<property name="configValue.connectionString" value="stage connection string here" />
</target>
执行编译代码并导出的目标后,您可以运行目标 update-config ,在这种情况下,我希望变量 export.config 导出的web.config的路径,然后调用另一个目标,设置connectionstring变量的值(这可以是目标测试或阶段),最后xmlpoing web.config与值。
希望这有帮助!
答案 1 :(得分:0)
您可以尝试使用这个基于XDT(web.config)转换引擎的XDT转换命令工具Config Transformation Tool,它允许您对任何XML文件运行XDT转换。您可以使用ccnet的任务块在msbuild
之后运行它 <tasks>
<exec>
</exec>
</tasks>
有关ccnet可执行任务的更多信息,请参阅here。 有关XDT转换的更多信息,请参阅this link in MSDN library