如何配置Visual Studio C#单元测试解决方案以接受不同的运行时配置? 我所拥有的

如何配置Visual Studio C#单元测试解决方案以接受不同的运行时配置? 我所拥有的,c#,visual-studio,unit-testing,configuration,runtime,C#,Visual Studio,Unit Testing,Configuration,Runtime,我有一个单元测试Visual Studio C#解决方案(它运行webdriver测试,不一定相关)。它途经TeamCity。目前,该环境在一个.cs文件中硬编码为“Dev”,我在本地手动更改代码,以便在需要时在其他地方运行 我想要什么 在TeamCity中设置两个项目的方法—一个在“开发”环境中运行,另一个在“测试”环境中运行。显然,我不能使用硬编码的值,所以我需要一些可以在运行时选择的配置文件集,或者可能是一些构建参数,但我不知道如何做,也不知道什么会起作用 (我在问题中没有提到TeamCi

我有一个单元测试Visual Studio C#解决方案(它运行webdriver测试,不一定相关)。它途经TeamCity。目前,该环境在一个.cs文件中硬编码为“Dev”,我在本地手动更改代码,以便在需要时在其他地方运行

我想要什么 在TeamCity中设置两个项目的方法—一个在“开发”环境中运行,另一个在“测试”环境中运行。显然,我不能使用硬编码的值,所以我需要一些可以在运行时选择的配置文件集,或者可能是一些构建参数,但我不知道如何做,也不知道什么会起作用

(我在问题中没有提到TeamCity,因为它不是100%相关的/只是提供了上下文——只要我可以运行单元测试,例如从命令提示符下运行可以传入的参数,就可以了。)

我试过的 从我所询问的情况来看,我认为我不能使用web.config,因为它不是一个web解决方案,而是一个单元测试解决方案。我相信有一种机制可以告诉Configuration Manager使用哪个web.config文件,所以我希望有一种类似的机制可以用于单元测试项目。我试着在“单元测试项目”和一系列其他搜索中查找“构建配置”的信息,但找到任何相关信息都是一场噩梦

有人能给我指出正确的方向吗?我对我的基本编程很在行,但如果它需要处理配置或构建参数,那么我可能需要您提供更明确的“操作方法”


提前感谢。

请检查Visual Studio的此扩展


这允许您为不同的生成类型创建不同的配置文件。您需要创建不同的生成类型,每个生成类型都有一个特定于该生成类型的配置文件。

好的,根据我上面的评论,我在这里尝试了一个解决方案:

成功了

我现在能够创建自动链接到构建配置的App.Config转换。然后,我可以在TeamCity内部指定构建配置


唯一的诀窍是,如果没有代码更改,但配置不同,“重建”目标就无法工作。(它们使用同一代理的同一目录,需要重建)。解决方法是在TeamCity版本控制设置中勾选“在生成之前清除所有文件”选项。

您是否熟悉如何使用.config文件使用
App.Cong
文件,并将您的设置置于
谢谢@MethodMan下。这允许我更改单个配置文件。不幸的是,我正在寻找一种基于命令行选项(或修改文件(包括配置)之外的其他选项)切换配置的方法。我需要能够从TeamCity运行不同的配置,而无需每次运行时修改配置中的内容。在服务器上构建时,您可以定义一个可以用#if.检查的符号,然后使用.INI文件或谷歌搜索如何在运行时从不同的app.config文件中读取。我不明白为什么您不能添加单个配置文件中的不同键取决于特定的环境,我一直都在这样做。在
编译器指令上进行google搜索是最好的选择。如果我理解正确,编译器指令/#if语句仍然要求我在每次运行单元测试时更改某些内容。我不会从di运行这两个选项不同的环境-我在不同的环境中运行测试。服务器、构建过程、环境变量等都是相同的。唯一的区别是我的单元测试是否打开带有“h”的浏览器ttps://test.xxxxxx或“h”ttps://dev.xxxxxx"因此,我需要从TeamCity/命令行运行单元测试dll,并传递不同的参数/配置。