【问题标题】:Project dependencies across multiple Visual Studio versions跨多个 Visual Studio 版本的项目依赖项
【发布时间】:2008-10-01 15:28:19
【问题描述】:

我有 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 个项目的解决方案目前不是一种选择。我们有一个 3rd 方的 visualstudio 插件,它还不能在 VS2008 中工作。 Project2 必须留在 VS2005 中

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

【问题讨论】:

    标签: visual-studio projects-and-solutions project-organization


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Project3 的预构建事件怎么样,它出去并使用批处理文件来构建 Project1 将其复制到 Project2 文件夹,然后构建 project2 并将其复制到 project3 文件夹。

      【讨论】:

      • 我确实使用构建后事件来处理我的案例中的细微差别。感谢您的提示。
      【解决方案3】:

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

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

      【讨论】:

      • 这将适用于书面问题。我的情况略有不同。严格要求将 Project2 排除在 2008 年之外……这只是我奇怪的生活。
      【解决方案4】:

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

      【讨论】:

      • 当然,可能有更优雅的方法可以做到这一点。我也很想听到他们的消息!
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        • 2015-07-08
        • 2022-09-28
        • 2017-04-06
        • 1970-01-01
        相关资源
        最近更新 更多