【问题标题】:Conflict of externalized appSettings config section (using configSource) and mstest外部化 appSettings 配置部分(使用 configSource)和 mstest 的冲突
【发布时间】:2011-06-03 22:12:12
【问题描述】:

我正在为 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. 放弃应用设置的外部配置

  2. 从 Cassini 切换到 cassinidev - 然后我可以停止使用 [AspNetDevelopmentServer()] 属性,这是一个 导致 web.config 需要 修改

  3. 在 VS 中配置一些东西以防止它这样做。为什么 它甚至关心自己的端口 卡西尼在工作?我不能 找到任何配置设置。

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

【问题讨论】:

    标签: c# asp.net visual-studio unit-testing mstest


    【解决方案1】:

    有点延迟,所以我不知道这对你是否仍然相关......

    但是您可以使用&lt;appSettings&gt;file= 属性来代替configSource
    即:

     <appSettings file="appsettings.config" /> 
    

    configSource 只希望替换整个部分,而 file 合并这些部分。因此,即使您添加了子元素,它仍然会从外部文件中添加其他元素。

    【讨论】:

      【解决方案2】:

      我知道这是一个非常晚的响应,但在 2018 年 7 月(使用 Visual Studio 2017)我仍然遇到这个问题,但这里有一些更多信息,即使你使用文件或 configSource 执行此操作,mstest 的问题是额外的配置文件不会被复制到您的 testresults 文件夹中。

      我们发现 VSStudio 中的测试有所不同。 在那里你可以在类级别使用部署属性。

      对于我们在构建服务器上运行的测试,您需要执行这些步骤

      首先将这些附加配置文件的属性设置为 Content & Copy if newer

      第二次添加 .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>
      

      在Test => VS studio的Test Settings菜单中第三次引用这个文件

      然后检查构建服务器上的 testresults 文件夹,它现在应该包含这两个文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-28
        • 2010-09-14
        • 2016-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-23
        相关资源
        最近更新 更多