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

3
我有三个 .net 项目。
Project1.dll 是由 VS2008 项目生成的。
Project2.dll 是由引用 Project1.dll 的 VS2005 项目生成的。
Project3.dll 是由引用 Project1.dll 和 Project2.dll 的 VS2008 项目生成的。
现在,我先构建 Project1.dll,并手动将其复制到 Project2 可以获取的位置。然后我构建 Project2.dll 并手动将它和 Project1.dll 复制到 Project3 可以获取它们的位置。
显然我做错了(手动)。正确的方法是保持项目引用的更新?
将 Project2 更新为 VS2008 并创建一个包含所有三个项目的解决方案目前不可行。我们有一个第三方 Visual Studio 插件,该插件尚未在 VS2008 中工作。因此 Project2 必须保留在 VS2005 中。
降级 Project1 和 Project3 到 VS2005 并创建一个解决方案也不可行。我们依赖于这些项目中的 C# 3.0 和 .net 3.5 功能。
5个回答

4

最好的选择可能是为所有三个项目设置一个共同的生成文件夹。这可以在“项目属性->生成->输出路径”中完成。然后将引用指向输出文件夹。这样,每当您构建任何较低级别的项目时,更高级别的项目都会有最新版本。您也可以为每个配置(调试、发布)设置路径,因此不需要为每种类型的生成更改路径。


2

为Project3添加一个预构建事件,使用批处理文件构建Project1并将其复制到Project2文件夹中,然后构建Project2并将其复制到Project3文件夹中。


我最终使用了一个后置构建事件来处理我的情况中的细微差别。谢谢你的提示。 - Amy B

1
我建议在解决方案之间共享csproj/vbproj文件。项目文件的格式不管是在哪个版本的studio中都是兼容的(但解决方案文件不是),只要您的VS2008项目针对2.0运行时,您应该没有编译问题。这将使您能够引用这些项目,从而解决依赖关系。
唯一需要注意的地方是如果您有一个Web项目需要在两个版本的studio之间工作。在这种情况下,需要对项目文件进行一些修改,以指向正确的MSBuild目标文件。

这个方案适用于原始问题。我的情况略有不同。严格要求将Project2排除在2008之外...只是我的奇怪生活。 - Amy B

0

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


当然,可能有更优雅的做法。我也很感兴趣听听它们! - itsmatt

0
我过去使用的一个技巧是将所有内容移动到2008年。然后我在2005年为项目二设置了一个特殊的解决方案,并使用它来处理插件。让这个工作取决于项目二在2008年的表现有多糟糕。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接