为 3 种不同的环境转换 app.config

2024-01-11

我需要能够使用 msbuild 转换我的 app.config 文件。如果文件名为 app.DEBUG.config 或 app.Release.config,我可以转换该文件,但如果添加一个名为 app.PROD.config 的文件,我就不能转换该文件。

如果我选择不同的 PublishProfile,使用常规 XDT 转换 msbuild 会识别不同的 web.config 文件

 msbuild path.to.project.csproj Configuration=Release PublishProfile=DEV

显然 app.config 不适用于相同的设置。我总是可以为 DEV.config 设置创建特定的构建配置,但为一个应用程序进行单独的构建确认似乎毫无用处。一种巧妙的方法是在构建后为每个环境复制正确的 app.config。

我尝试使用 SlowCheetah 插件,但这似乎只会转换默认的 DEBUG 和 RELEASE 配置文件,这是不合适的,因为我有两个以上的环境。如果我确实使用了这个错误,请告诉我应该向 msbuild 传递什么参数来选择我的 app.DEV.config。

预期结果是 msbuild 将根据名为 app.DEV.config 的自定义转换或为 app.PROD.config 自定义的转换来转换 app.config。我希望有一个参数可以传递给 msbuild,它允许我使用 Release 配置,但每个环境具有不同名称的转换。


我认为令人困惑的是我们有能力制造编译时配置转换然后我们有部署时配置转换.

通常,您使用编译时配置转换来更改本地默认的配置文件,以便它适合 DEBUG 或 RELEASE 配置(或您定义的任何自定义配置)。对于 web.config,该工具是内置的。对于 app.config,SlowCheetah Visual Studio 扩展 http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5为 app.config 带来了与 web.config 相同的功能。 RELEASE 配置的配置转换示例是删除 system.web 编译上的调试属性。

部署时配置转换是在部署到特定环境(例如 QA、PROD)时对配置文件的操作。数据库连接字符串需要更改、服务端点需要更改等...对于 web.config,MSDEPLOY 是首选的 IIS 工具。对于app.config,看来我们需要依赖安装程序技术。有不同的工具可以实现此目的,例如WIX http://wixtoolset.org/例如。

无论如何,我希望这个对编译时和部署时配置转换之间区别的简短解释有助于解释为什么工具集是支离破碎的。更深入的分析,可以参考我针对这个主题写的一篇博文:http://philippetruche.wordpress.com/2012/07/11/deploying-web-applications-to-multiple-environments-using-microsoft-web-deploy/ http://philippetruche.wordpress.com/2012/07/11/deploying-web-applications-to-multiple-environments-using-microsoft-web-deploy/

如果选择使用 WIX 工具集来生成安装程序,请参阅使用 Visual Studio 2012 和 Wix 创建多环境 Windows 安装程序 http://geekswithblogs.net/alexhildyard/archive/2013/03/10/creating-multi-environment-windows-installers-with-visual-studio-2012-and-wix.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 3 种不同的环境转换 app.config 的相关文章

  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 如何使用 PowerShell 中的凭据从本地复制到远程位置?

    我是 PowerShell 的新手 我有用户名和密码来访问远程位置的共享文件夹 I need 复制文件foo txt从当前位置到 Bar foo myCOmpany com logs在为以下内容编写的 PS1 脚本中Powershell v
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 将 .msi 转换为 .exe 的最佳工具包是什么?

    我想将 msi 封装到 exe 中以便添加 硬编码文件夹位置 例如 C Program Files x86 TEST 添加安装版本文件 使用静默安装 使用命令行开关 安装 卸载 日志生成 添加 Windows 注册表足迹 微星定制 用于安装
  • 使用 Web 视图下载文件

    在一个项目中 我想在 Web 视图中加载的 http 页面中下载 mp3 文件 下载的文件可以通过手机驱动器或保管箱等应用程序打开 当用户单击 Web 视图中的链接时 它应该将其下载到 iPhone 在服务器端 mp3 文件位于 webro
  • linux getlogin() 内存泄漏

    我有以下代码 由于某种原因 valgrind 在 getlogin 函数中发现了一些内存泄漏 代码 include
  • MySQL临时表与存储过程中的内存表

    在存储过程中使用哪个更好 临时表还是内存表 该表用于存储报告的摘要数据 开发人员应该注意哪些权衡 CREATE TEMPORARY TABLE t avg double or CREATE TABLE t avg double ENGINE
  • 实体框架:已经有一个与此命令关联的打开的 DataReader,必须先将其关闭

    这个问题与this https stackoverflow com questions 7917261 how to load the related entities using entity framework and the repo
  • CKEditor:子菜单(下拉列表)未出现

    我需要插件的下拉菜单列表中的下拉子菜单列表 但问题是 该菜单显示它有下拉子菜单列表 但列表内容尚未加载 显示空子菜单 快照 code CKEDITOR plugins add microdata requires styles button
  • 开发 H264 硬件解码器 Android - Stagefright 还是 OpenMax IL?

    我正在为 Android 开发 H264 H W 加速视频解码器 到目前为止 我已经接触过一些图书馆MediaCodec Stagefright OpenMax IL OpenMax AL and FFmpeg 经过一番研究 我发现 我找到
  • 解决 Java7 中 FileWalking 树中拒绝访问的问题

    下面是一些简单的代码 只是为了测试Files walkFileTree 方法 然而 该文件夹 etc ssl private 它具有这些权限 rwx x 抛出异常 即使我认为我用 if 语句来保护它 if permissions equal
  • 长 .when().then().when().then().otherwise() 链的替代方案

    是否有一些聪明的替代方法可以编写长的when then otherwise 链而不对值进行硬编码 请参见下面的示例 假设我们有以下数据框 df pl DataFrame Market AT AT DE DE CA DE UK US Numb
  • iPhone异步文件加载?

    有没有办法异步加载iPhone中的本地文件 我使用以下方法为我的 uitableview 加载 uiimages NSData imageData NSData alloc initWithContentsOfFile fileName U
  • 通过轻量级迁移更改核心数据实体名称?

    有没有办法在 iOS 上使用 自动轻量级迁移 的同时更改核心数据实体名称的名称 在目标模型中 将重命名标识符设置为源模型中实体的名称 在 Xcode 3 中 重命名标识符位于详细信息窗格的用户信息窗格中 版本哈希修饰符下方 在 Xcode
  • 仅切换手风琴点击 vue.js

    我正在构建一个简单的 vue 手风琴 当我单击一个手风琴时 它们都会打开 这不是我追求的行为 有没有办法只打开点击的那个 我以为 这个 会解决这个问题 但我没有运气 html div class accordion container di
  • NumPy/SciPy:将蒙版移动到图像上并检查是否相等

    我正在尝试使用进行图像处理NumPy http en wikipedia org wiki NumPy and scipy http en wikipedia org wiki SciPy 我有一个对应于背景的模板图像 我想找出它在输入图像
  • WebSphere Application Server 7.x 中的类加载器问题

    com ibm xml xlxp2 api stax XMLOutputFactoryImpl 不兼容 javax xml stream XMLOutputFactory com ibm xml xlxp2 api stax XMLOutp
  • 如何在 power bi 的切片机中拥有实际的日历?

    当我们的 power bi 报告运行时 它会根据相对切片器创建的当前日期运行它 我们的用户还希望有一些选项来使用实际日历选择不同的日期范围 并在使用当前日期过滤器运行初始报告后单击它 SSRS 中完成的方式 使用除列表 下拉或相对之外的数据
  • sqlalchemy/postgresql:数据库列计算的默认值

    我有一个事务表 其中包含tenant id和transaction id列 它们组成了唯一的复合索引 对于插入操作 transaction id必须加1 但是对于给定的tenant id 因此 使用 sqlalchemy 框架 我手动查找t
  • WCF初学者教程-无法调试(单步进入)

    我正在做以下教程http msdn microsoft com en us library ms731835 28v vs 100 29 aspx http msdn microsoft com en us library ms731835
  • 使用 Mutation Observer 检测向 DOM 添加的元素

    我在拖动事件后向 DOM 添加一些元素 我需要检测这个元素以及添加这个元素的时刻 我使用 Mutation Observer 但有些问题 代码 var targetNodes mvly var MutationObserver window
  • 静态类的好处[重复]

    这个问题在这里已经有答案了 可能的重复 静态类有什么用 https stackoverflow com questions 576853 what is the use of a static class 声明静态类有什么好处 public
  • 为 3 种不同的环境转换 app.config

    我需要能够使用 msbuild 转换我的 app config 文件 如果文件名为 app DEBUG config 或 app Release config 我可以转换该文件 但如果添加一个名为 app PROD config 的文件 我