Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 跨多个Visual Studio版本的项目依赖关系_Visual Studio_Projects And Solutions_Project Organization - Fatal编程技术网

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

Visual studio 跨多个Visual Studio版本的项目依赖关系,visual-studio,projects-and-solutions,project-organization,Visual Studio,Projects And Solutions,Project Organization,我有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可以获取它们的位置 很明显我做错了什么(手动)。什么是保持项目参考资

我有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,然后创建一个包含所有3个项目的解决方案,这在目前不是一个选项。我们有一个第三方visualstudio插件,它在VS2008中还不起作用。项目2必须留在VS2005


将Project1和Project3反更新为VS2005,然后创建一个解决方案也不是一个选项。我们在这些项目中依赖于C#3.0和.net 3.5功能。

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

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

Project3的预生成事件如何,这将使用一个批处理文件来构建Project1,将其复制到Project2文件夹,然后构建Project2并将其复制到project3文件夹。

我过去使用的一个技巧是将所有内容移动到2008年。然后,我在2005年为Project2设置了一个特殊的解决方案,并使用它来处理addin。要让这项工作正常运行,取决于project 2在2008年的表现有多糟糕。

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


唯一让问题变得棘手的地方是,如果您有一个web项目需要在studio的两个版本之间工作。在这种情况下,对项目文件进行了一些修改,这些修改将指向正确的MSBuild目标文件

当然,可能有更优雅的方式来做到这一点。我也很有兴趣听到他们的消息!这将适用于书面问题。我的情况略有不同。有一个严格的需要让Project2远离2008。。。只是我的维德生活。我确实使用了一个构建后事件来处理我的案例中的细微差别。谢谢你的提示。