外部化的appSettings配置部分(使用configSource)和mstest的冲突
本文关键字:冲突 configSource mstest appSettings 配置部 外部化 使用 | 更新日期: 2023-09-27 17:58:18
我正在使用appsettings的外部化配置部分,以便能够为每个开发人员提供不同的配置,比如:
<appSettings configSource="appsettings.config" />
当我对这个项目(它是一个web应用程序)运行mstest时,它会盲目地修改这个部分,如下所示:
<appSettings configSource="appsettings.config">
<add key="microsoft.visualstudio.teamsystems.backupinfo" value="1;web.config.backup.af6ed449-e04a-4a52-99d6-b8df0b133316" />
<add key="microsoft.visualstudio.teamsystems.aspnetdevserver:/" value="56917;True;3448;1;-8588944684513929784" />
</appSettings>
这显然是错误的,即使根据图式也是如此。
它需要修改它的原因是指定要运行的Cassini/dev服务器的信息。我想就是这样,它似乎没有修改文件中的任何其他部分(很难判断,因为它还完全重新格式化了文件)。
问题是,我有什么选择才能让它发挥作用?
到目前为止,我只想出了两个实用的,都是次优
放弃appsettings 的外部配置
从卡西尼切换到卡西尼德夫-然后我可以停止使用[AspNetDevelopmentServer()]属性,即web.config中的结果需要改良
在VS中配置某些内容以防止它执行此操作。为什么它甚至关心自己的端口卡西尼在干什么?我不能查找任何配置设置。
等待MS修复此问题,因此[AspNetDevelopmentServer()]将使用外部化的appSettings
有点延迟,所以我不知道这是否仍然与您有关。。。。
但是您可以使用<appSettings>
的file=
属性而不是configSource
I.e:
<appSettings file="appsettings.config" />
虽然configSource
希望只替换整个部分,但file
合并了这些部分。因此,即使添加了子元素,它仍然会从外部文件中添加额外的元素。
我知道这是一个非常晚的响应,但在2018年7月(使用Visual Studio 2017),我仍然有这个问题,但这里有一些更多信息,即使你用file或configSource来做,mstest的问题是额外的配置文件不会复制到你的testresults文件夹中。
我们发现在VSStudio中进行测试时情况有所不同。在那里,您可以在类级别上使用deployment属性。
对于在构建服务器上运行的测试,您需要执行以下步骤
首先将这些附加配置文件的属性设置为Content&如果更新则复制
其次,添加一个.testsettings文件作为解决方案项,而不是每个项目!
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="TestSettings"
id="350a1732-b798-4794-b711-15b44e8504e9"
xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Deployment>
<DeploymentItem filename="project1'file1.config" />
<DeploymentItem filename="project2'file2.config" />
</Deployment>
</TestSettings>
VS studio 的测试=>测试设置菜单中对该文件的第三个引用
然后检查构建服务器上的testresults文件夹,它现在应该包含这两个文件