|
|
1
5
所以,如果我理解正确的话,您的测试项目有一个对库和客户机的引用,而客户机又将库合并到了……所以,在测试的构建时,您会得到同一个库的两个引用。我认为解决方案是从测试项目中删除库引用,并且只引用客户机,客户机将拥有您所需要的一切。 |
|
|
2
2
如果我理解正确,如果您只在测试中引用合并的程序集,那么您将可以访问所有类型,不必引用库程序集,从而消除了ILmerge的问题。 您可能需要添加对二进制“客户机”输出(即合并文件)的引用,并添加手动生成依赖项以控制正确的编译顺序。 在我的一个项目中,我通过手动编辑csproj文件来做到这一点,将“copyfilestooutputdirectory”目标重写为不仅编译,而且在构建过程中合并“client”,而构建后事件也应该做到这一点(我同时做了一些其他不相关的更改,这迫使我更改了目标行为)。 然后,我编辑了引用合并的dll的其他项目文件,以使用如下引用:
这可以确保VS始终采用正确的版本(调试/发布)。也许这有帮助。 |
|
|
3
0
好吧,你可以使用一个定制版本的illink(而不是ilmerge)来解决这个问题。 或者,您可以调整它以删除重复的程序集。 见 Source Code here . 注意,ILink是一个C++程序。 |