代码之家  ›  专栏  ›  技术社区  ›  Orion Edwards

除非构建整个解决方案,否则VisualStudio2008单元测试不会获取代码更改

  •  1
  • Orion Edwards  · 技术社区  · 16 年前

    以下是场景:

    1. 更改我的代码:
    2. 将光标放在单元测试类/方法中,调用VS2008的“在当前上下文中运行测试”命令

    但是问题是,单元测试没有使用它刚刚构建的dll的最新版本。相反,它使用先前构建的dll(其中没有更新的代码),因此测试失败。

    添加新方法时,这将导致 MethodNotImplementedException ,当添加一个类时,它会导致 TypeLoadException

    我可以通过这样做来解决这个问题

    1. 更改我的代码:
    2. 更改代码的单元测试

    我能做些什么来解决这个问题吗?我的代码都不在GAC中,也没有什么有趣的东西,只是普通的老dll(在win7/64位机器上针对.net3.5SP1构建)

    请帮帮我!

    1 回复  |  直到 16 年前
        1
  •  1
  •   Orion Edwards    16 年前

    在进一步挖掘之后,我解决了这个问题:

    1. 显示测试dll上的引用列表
    2. 从列表中删除对代码dll的引用

    然后我对.csproj进行了修改,以查看发生了什么变化,如下所示

    又旧又破

    <ProjectReference Include="..\Base\Base.csproj">
      <Project>{1C61F557-24C5-4B4A-90A8-08D0DCEE15A1}</Project>
      <Name>Base</Name>
      <Private>False</Private>
    </ProjectReference>
    

    新的和好的

    <ProjectReference Include="..\Base\Base.csproj">
      <Project>{1C61F557-24C5-4B4A-90A8-08D0DCEE15A1}</Project>
      <Name>Base</Name>
    </ProjectReference>
    

    这个 <Private>False</Private> 比特显然是“复制本地”的意思,所以这就解释了。请注意:对于单元测试,请记住将Copy Local设置为true!