【问题标题】:Whats the best way to set up a VS project that uses mutiple external open source projects?设置使用多个外部开源项目的 VS 项目的最佳方法是什么?
【发布时间】:2010-01-14 16:22:35
【问题描述】:

我有一个大型项目,我正在用更好的开源替代品替换其中的 2 个部分。开源库非常大,但它们稳定且不变,因此在我的 VS 项目中直接包含源代码对我来说似乎毫无意义 - 它需要加载更多,需要编译更多等。我宁愿只构建 2 个开源项目,固定版本,然后从主项目中引用它们。

但这给我带来了一些问题。

  1. 我需要 DEBUG 和 RELEASE 版本的库 - VS 无法根据这些定义在引用之间切换。

  2. 如果我想单步调试其他项目中的代码,调试会更加困难——它不像单步调试代码那么简单——或者是这样吗?

  3. 我还没有想到的其他事情......

所以当我玩弄想法时,我想我会问你们如何设置它。

主项目和 2 个开源项目都在不同的 SVN 存储库中。 开源项目我不会每天都得到新的主干,但会修复一个版本。

谢谢

【问题讨论】:

    标签: visual-studio multiple-projects


    【解决方案1】:

    1)如果您通过编辑 .csproj 文件手动执行此操作,则可以在不同构建配置的参考之间切换。

    csproj 文件是一个 MSBuild 脚本,它是 XML。如果您向下浏览它,您应该会发现一个 元素,其中包含一堆 元素。您可以像这样向这些参考元素之一添加条件:

    <Reference Condition=" '$(Configuration)' == 'Debug' " Include="System.Drawing" />
    

    Include 属性可以包含程序集的完整强名称,这对于二进制文件的调试和发布版本可能不一定不同。在这种情况下,您可以添加一个 元素以包含 .dll 的路径。

    <Reference Include="assembly strong name">
      <HintPath>c:\LibraryStuff\Debug\Library.dll</HintPath>
    </Reference>
    

    您的提示路径也可以是相对的:

    <HintPath>..\..\LibraryStuff\Debug\Library.dll</HintPath>
    

    [免责声明:虽然我从来没有用参考资料做过这件事,但我不能保证不会有问题。我很快对其进行了测试,它似乎工作正常,尽管无论您选择哪种构建配置,Visual Studio 都会显示这两个引用(尽管它只构建匹配配置类型的那个)。如果它们具有匹配的名称,它还会在第二个上放置一个警告图标,但编译似乎工作正常。]

    如果您确实遇到问题,您可以尝试只使用一个引用与两个不同的 HintPath 节点并将条件放在提示路径上。


    2) 如果您将 .pdbs 和源代码都放在正确的位置并且可以访问,那么您应该能够通过单步执行代码直接调试到库中,即使您只是在引用 .dll 文件。

    【讨论】:

    • 1.有趣,我会研究一下 2. 问题是我认为调试和发布版本之间存在差异,因为优化等原因。感谢您的回复。
    • Re: 2 - 如果发布版本是在打开了完整的调试符号的情况下制作的(并且你有源代码,我想你可以自己做)那么你应该没有问题调试到库中即使在发布模式下。由于您所说的优化,您将无法逐行执行,但总的来说,调试仍然可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2017-04-15
    • 2018-02-16
    相关资源
    最近更新 更多