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

Art*_*miy 3 c# asp.net unit-testing mstest visual-studio

我使用外部化配置部分进行appsettings,每个开发人员可以使用不同的部分,如下所示:

  <appSettings configSource="appsettings.config" />
Run Code Online (Sandbox Code Playgroud)

当我针对这个项目运行mstest(它是一个Web应用程序)时,它会盲目地修改这个部分,如下所示:

  <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>
Run Code Online (Sandbox Code Playgroud)

即使根据架构,这显然是错误的.

它需要修改它的原因是指定它将要运行的有关Cassini/dev服务器的信息.我认为就是这样,它似乎没有修改文件中的任何其他部分(很难说它因为它也完全重新格式化了文件).

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

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

  1. 放弃appsettings的外部配置

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

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

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

Avi*_*viD 5

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

但是你可以使用而不是的file=属性. 即:<appSettings>configSource

 <appSettings file="appsettings.config" /> 
Run Code Online (Sandbox Code Playgroud)

虽然configSource期望只是替换整个部分,但file合并这些部分.因此,即使添加了子元素,它仍会添加外部文件中的其他元素.