C# Microsoft伪造程序集名称冲突
我有3个C#项目X、Y和Z。我有2个单元测试项目Xt,测试项目X中的代码,Yt测试项目Y中的代码。项目Z是一个库项目,由项目X和Y引用 在这两个单元测试项目中,我都为Z生成了一个Fakes程序集,这意味着它们都有自己的Z.Fakes.dll版本。所有DLL都输出到同一目录中。因为它们都创建一个Z.Fakes.dll,所以根据构建顺序,其中一个会覆盖输出目录中的另一个,这意味着一组单元测试失败,因为Fakes部件中不存在垫片和短棒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部件中不存在垫片和短棒 假设我不能为每个单元测试项目设置不同的输出目录,也不能将单元测试合
假设我不能为每个单元测试项目设置不同的输出目录,也不能将单元测试合并到单个单元测试项目中,那么如何避免这种伪造的程序集名称冲突?有没有办法生成伪造程序集并为其指定别名,例如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