如何在Web.config中摆脱单元测试遗留物?

问题描述

| 在将当前项目上传到暂存服务器时,我注意到Asp.net MVC框架的Web.config文件包含一些对称为的程序集的引用 Hostadapters.AspNetAdapter QualityTools.Common QualityTools.ExecutionCommon QualityTools.Resource 我没有自己添加条目,但是从它们的名称猜测,我怀疑这些是通过“添加单元测试”向导添加的。 问题是,引用这些程序集后,该项目无法在我的登台服务器上运行,因为它找不到相关的DLL。他们的路径被硬编码到 Web.config
<httpModules>
  <add name=\"HostAdapter\" type=\"Microsoft.VisualStudio.TestTools.HostAdapter.Web.HttpModule,Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter,Version=10.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a\" />
</httpModules>
  <dependentAssembly>
    <assemblyIdentity name=\"Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />
    <codeBase version=\"10.0.0.0\" href=\"file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter.DLL\" />
  </dependentAssembly>
我是否认为这些程序集与单元测试相关? 当我尝试删除其中一些条目时,服务器响应错误403 \“访问被拒绝:禁止。\”,这可能是什么意思,如何避免呢? 我可以简单地将引用的DLL文件上载到服务器上的某个位置,但这似乎违反直觉。我还有其他选择吗? 编辑:我已经阅读了将配置拆分为单独部分的建议。这是一个很好的建议,但是它对我如何立即解决服务器上的任何配置问题没有直接帮助我。     

解决方法

        我将有单独的web.config文件进行分期和现场直播。 通常出于开发目的需要更改许多设置,例如缓存长度,安全设置,URL等 根据我的经验,使用相同的配置是灾难的根源-需要一名开发人员更改设置以使某些内容在本地运行,然后检入更新的文件,最终导致损坏的登台服务器(或可能处于运行状态) ! 如果使用构建,则在构建过程中用web.live.config或web.staging.config替换web.config很简单。 您的问题就消失了。     ,        令我感到痛苦的是,测试也破坏了您的配置并破坏了您的部署。解决此问题的正确方法是使用不同的配置文件进行调试,暂存和发布。 这说明了它们的作用并指向更多信息。 什么是Web.Debug.config和Web.Release.Config文件? 以下是删除有问题的模块的转换:
  <system.web>
    <httpModules>
      <add name=\"HostAdapter\" xdt:Locator=\"Match(name)\" xdt:Transform=\"Remove\" />
    </httpModules>           
  </system.web>

  <system.webServer>
    <modules>
      <add name=\"HostAdapter\" xdt:Locator=\"Match(name)\" xdt:Transform=\"Remove\"/>
    </modules>
  </system.webServer>