c# - 根据构建常量修改配置文件

标签 c# .net configuration-files

我有一个依赖于某些内部 Web 服务的应用程序,因此我们希望我们的开发和登台配置指向 Web 服务的开发和登台服务器。

现在,这意味着手动编辑我的 app.config 文件以指向适当的 URL。这不仅很麻烦,而且容易出现人为错误(“哎呀,我没有删除那个生产 URL 吗?”可能会导致很多问题)。

在代码中的一小部分地方,我使用了

#if DEBUG
    // do something
#endif

预处理语句,并且想知道是否可以对 app.config 中的值执行类似的操作。我已经能够通过我的应用程序设置很好地做到这一点,因为这些值可以在代码中访问。

我知道构建后脚本,但似乎有一种比每次构建时编写例程来修改 app.config XML 更简单的方法。有什么建议吗?

这适用于 C# 和 .NET 3.5,包括旧的“Web 引用”和较新的 WCF“Web 服务”引用。

最佳答案

我们使用了一个名为 XmlPreprocessor 的程序来自 SourceForge 来处理这个问题。它允许您在配置文件和不同的值文件中创建参数以从中填充它们。

给定以下文件:

应用程序配置

...
<importantSetting>$importantSettingValue$</importantSetting>
...

qavalues.xml

...
<importantSettingValue>QAvalue</importantSettingValue>
...

prodvalues.xml

...
<importantSettingValue>PRODvalue</importantSettingValue>
...

只需使用以下命令行即可在正确的位置获取正确的值。

XmlPreProcess.exe app.config qavalues.xml

关于c# - 根据构建常量修改配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/128513/

相关文章:

c# - 你如何在 C# 中为 Canvas 上的线条设置动画?

c# - 定制异常消息未显示在控制台中

c# - 无法找到 .NET Core SDK。 .NET Core 调试将不会启用。确保 .NET Core SDK 已安装并且在路径上

javascript - 如何使用 html 和 javascript 调用 Web 服务

c# - 如何从 Apache NMS ActiveMQ 消息中获取底层流句柄

c# - 如何使用 NLog 在文件目标中使用 session 变量?

javascript - C# 将日期时间转换为日期 javascript

C#-根据与另一个列表的部分交集从列表中选择特定项目 (Linq + Lambda)

ef-code-first - Entity Framework 代码优先迁移,运行迁移并可选择升级到最新更改

mysql - MySQL GROUP_CONCAT 函数的替代方案