Microsoft Fakes 程序集名称冲突

Microsoft Fakes Assembly name conflict

我有 3 个 C# 项目 X、Y 和 Z。我有 2 个单元测试项目 Xt 测试项目 X 中的代码,Yt 测试项目 Y 中的代码。项目 Z 是一个库项目,被项目引用X 和 Y.

在两个单元测试项目中,我都为 Z 生成了一个 Fakes 程序集,这意味着它们都有自己的 Z.Fakes.dll 版本。所有 DLL 都输出到同一目录中。因为它们都创建了一个 Z.Fakes.dll,一个在输出目录中覆盖了另一个,这取决于构建顺序,这意味着一组单元测试失败,因为 Shims & Stubs 在 fakes 程序集中不存在。

假设我不能为每个单元测试项目设置不同的输出目录,并且不能将单元测试合并到一个单元测试项目中,如何避免这种Fakes程序集名称冲突?有什么方法可以生成 Fakes Assembly 并给它起一个别名,例如Zx.Fakes.dll 和 Zy.Fakes.dll?

我们处理它的方式是我们在解决方案中有一个单独的 Fakes 项目,您可以在其中生成所有假货,然后只需将 dll 添加到该假货项目的 FakesAssemblies 文件夹中。当您这样做时,您的解决方案参考结构应如下所示

Solution
- MyFakes
  - References
    - X
    - X.Fakes //Created via the right-click create Fake menu on X
    - Y
    - Y.Fakes //Created via the right-click create Fake menu on Y
    - Z
    - Z.Fakes //Created via the right-click create Fake menu on Z
- X.csproj
  - References
    - Z
- Xt.csproj
  - References
    - MyFakes //This is just for build order
    - X
    - ..\MyFakes\FakesAssemblies\X.Fakes.dll
    - Z
    - ..\MyFakes\FakesAssemblies\Z.Fakes.dll
- Y.csproj
  - References
    - Z
- Yt.csproj
  - References
    - MyFakes //This is just for build order
    - Y
    - ..\MyFakes\FakesAssemblies\Y.Fakes.dll
    - Z
    - ..\MyFakes\FakesAssemblies\Z.Fakes.dll
- Z.csproj