我正在使用Visual Studio 2010 Pro构建包含两个项目的解决方案。项目A包含我的大部分源代码,而项目B旨在独立运行,但必须使用项目A中包含的一些源代码。
在当前配置下,项目A包含在项目B中作为参考。我希望能够独立构建和维护每个项目的版本,但是当我构建整个解决方案时,似乎是ProjectB.exe没有ProjectA.exe在同一本地目录中运行。我会想并希望编译.exe二进制文件时,所有依赖项都打包在每个中,但看起来并非如此。实际上,任何在ProjectA.exe不存在时运行ProjectB.exe的尝试都会导致System.IO.FileNotFoundException。
有没有办法构建一个独立运行的ProjectB.exe版本,避免代码重复?
答案 0 :(得分:1)
如果你想摆脱或依赖A,你必须将共同的逻辑提取到另一个项目中(我们称之为C),正如Adriano在评论中所建议的那样。
如果项目之间甚至需要更松散的联系,您可以不将A(或C)作为项目引用,而是作为构建的程序集(.dll文件)引用,并将Specific Version
引用属性检查为{{1} }。此外,如果您的项目/代码库结构更复杂,请检查更多的程序集共享选项 here 。
答案 1 :(得分:1)
如果您需要通用代码,最好的解决方案是将公共类分解为第三个程序集以充当库。 (根据Adriano的建议。)他提示的另一个选项是在第二个项目中使用“添加现有文件”时使用“as link”选项。
如果您不知道它在哪里,请使用“添加现有文件”选项,然后在对话框中选择文件,“添加”按钮有一个下拉选项,您可以在其中选择“作为链接”文件“(或其他类似的东西。)
这允许您将相同的类编译到多个项目中。但请记住,无法为第二个项目更改链接文件的命名空间。如果命名空间是“ProjectA.Domain”,那么您需要在项目B中访问它。在引入多平台程序集之前,这对于Silverlight项目来说是一个有用的技巧。
答案 2 :(得分:0)
一些选项: