C# Microsoft伪造程序集名称冲突

C# Microsoft伪造程序集名称冲突,c#,testing,microsoft-fakes,C#,Testing,Microsoft Fakes,我有3个C#项目X、Y和Z。我有2个单元测试项目Xt,测试项目X中的代码,Yt测试项目Y中的代码。项目Z是一个库项目,由项目X和Y引用 在这两个单元测试项目中,我都为Z生成了一个Fakes程序集,这意味着它们都有自己的Z.Fakes.dll版本。所有DLL都输出到同一目录中。因为它们都创建一个Z.Fakes.dll,所以根据构建顺序,其中一个会覆盖输出目录中的另一个,这意味着一组单元测试失败,因为Fakes部件中不存在垫片和短棒 假设我不能为每个单元测试项目设置不同的输出目录,也不能将单元测试合

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

在这两个单元测试项目中,我都为Z生成了一个Fakes程序集,这意味着它们都有自己的Z.Fakes.dll版本。所有DLL都输出到同一目录中。因为它们都创建一个Z.Fakes.dll,所以根据构建顺序,其中一个会覆盖输出目录中的另一个,这意味着一组单元测试失败,因为Fakes部件中不存在垫片和短棒


假设我不能为每个单元测试项目设置不同的输出目录,也不能将单元测试合并到单个单元测试项目中,那么如何避免这种伪造的程序集名称冲突?有没有办法生成伪造程序集并为其指定别名,例如Zx.Fakes.dll和Zy.Fakes.dll

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

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 解决方案 -我的假货 -参考资料 -X -X.赝品//通过右键单击X上的“创建赝品”菜单创建 -Y -Y.赝品//通过右键单击Y上的“创建赝品”菜单创建 -Z -Z.伪造//通过右键单击Z上的“创建伪造”菜单创建 -X.csproj -参考资料 -Z -Xt.csproj -参考资料 -MyFakes//这只是为了生成订单 -X -..\MyFakes\FakesAssembly\X.Fakes.dll -Z -..\MyFakes\FakesAssembly\Z.Fakes.dll -Y.csproj -参考资料 -Z -Yt.csproj -参考资料 -MyFakes//这只是为了生成订单 -Y -..\MyFakes\FakesAssembly\Y.Fakes.dll -Z -..\MyFakes\FakesAssembly\Z.Fakes.dll -Z.csproj