跨多个Visual Studio版本的项目依赖项

时间:2020-03-06 14:58:54  来源:igfitidea点击:

我有3个.net项目。

Project1.dll由VS2008项目生成。

Project2.dll由引用Project1.dll的VS2005项目生成。

Project3.dll由同时引用Project1.dll和Project2.dll的VS2008项目生成。

现在,我构建Project1.dll,并将其手动复制到Project 2可以拾取它的地方。

然后,我构建Project2.dll,并将其和Project1.dll手动复制到Project 3可以拾取它们的地方。

显然我做错了(手动)。使项目参考保持最新的正确方法是什么?

目前无法将Project2更新到VS2008,然后创建一个包含所有3个项目的解决方案。我们有一个第三方的visualstudio插件,该插件在VS2008中尚不可用。 Project2必须保留在VS2005中

将Project1和Project3升级到VS2005,然后创建一个解决方案也不是一种选择。这些项目中我们依赖C3.0和.net 3.5功能。

解决方案

我们使用一个构建脚本来处理依赖关系,构建DLL并手动执行操作。

大卫,
最好的选择可能是为所有三个项目都拥有一个公共的构建文件夹。这可以在"项目属性"->"生成"->"输出"路径中完成。然后将引用指向输出文件夹。这样,无论何时构建任何较低的项目,较高的项目都将具有最新版本。我们还可以按配置(调试,发行版)设置路径,因此我们无需为每种构建类型进行更改。

如何处理Project3的预构建事件,该事件结束并使用批处理文件构建Project1,将其复制到Project2文件夹,然后构建project2,并将其复制到project3文件夹。

我过去使用的一个技巧是将所有内容移至2008年。然后,我在2005年为项目2设置了一个特殊的解决方案,并将其用于外接程序。使其工作仅取决于两个项目在2008年的表现如何。

我建议在解决方案之间共享csproj / vbproj文件。项目文件的格式在Studio的两个版本之间兼容(但是解决方案文件不兼容),只要VS2008项目以2.0运行时为目标,就可以毫无问题地编译它们。这将允许我们引用项目,这些项目将处理依赖项。

唯一麻烦的地方是,如果我们有一个需要在两个Studio版本之间工作的Web项目。在这种情况下,将对项目文件进行一些修改,这些修改将指向正确的MSBuild目标文件。