如何摆脱我的Web.config中的单元测试重复?

时间:2011-06-15 10:18:03

标签: c# asp.net asp.net-mvc visual-studio 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文件上传到服务器上,但这似乎是违反直觉的。我还有其他选择吗?

编辑:我已阅读将配置拆分为单独部分的建议。这是一个很好的建议,但它对我在服务器上运行任何配置的直接问题没有帮助吗?

2 个答案:

答案 0 :(得分:3)

测试使您的配置失败并打破部署的痛苦也发生在我身上。解决问题的正确方法是使用不同的配置文件进行调试,暂存和发布。

这解释了他们的所作所为,并指出了更多信息。

What are the Web.Debug.config and Web.Release.Config files for?

以下是删除违规模块的转换:

  <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>

答案 1 :(得分:0)

我会分开web.config文件进行暂存和生活。

经常有许多设置需要改变以用于开发目的,例如缓存长度,安全设置,网址等。

根据我的经验,使用相同的配置是灾难的一个方法 - 需要1个开发人员更改设置以使本地工作正常,然后检查更新的文件,最终得到一个损坏的登台服务器(或可能活着!)

如果您使用构建,那么在构建过程中用web.live.config或web.staging.config替换web.config很简单。

然后你的问题就消失了。