2

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

但这给我带来了几个问题。

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

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

  3. 还有一些我还没有想到的...

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

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

谢谢

4

1 回答 1

4

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

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

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

Include 属性可以包含程序集的完整强名称,这对于二进制文件的调试和发布版本可能不一定不同。在这种情况下,您可以添加一个 <HintPath> 元素以包含 .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 文件,您也应该能够通过单步执行代码直接调试到库中。

于 2010-01-14T16:56:56.663 回答