外部化的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服务器的信息。我想就是这样,它似乎没有修改文件中的任何其他部分(很难判断,因为它还完全重新格式化了文件)。

问题是,我有什么选择才能让它发挥作用?

到目前为止,我只想出了两个实用的,都是次优

  1. 放弃appsettings 的外部配置

  2. 从卡西尼切换到卡西尼德夫-然后我可以停止使用[AspNetDevelopmentServer()]属性,即web.config中的结果需要改良

  3. 在VS中配置某些内容以防止它执行此操作。为什么它甚至关心自己的端口卡西尼在干什么?我不能查找任何配置设置。

  4. 等待MS修复此问题,因此[AspNetDevelopmentServer()]将使用外部化的appSettings

外部化的appSettings配置部分(使用configSource)和mstest的冲突

有点延迟,所以我不知道这是否仍然与您有关。。。。

但是您可以使用<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文件夹,它现在应该包含这两个文件