2010-01-14 62 views
2

我有一个大型项目,我正在用更好的开源替代品取代2个部分。开源的库很大,但它们是稳定的,不变的,所以在我的VS项目中直接包含源代码对我来说似乎毫无意义 - 它更多的是加载,更多的是编译等。我宁愿仅仅构建2个开源项目,在一个固定版本上,然后从主项目中引用它们。建立一个使用多个外部开源项目的VS项目的最佳方式是什么?

但这给了我一些问题。

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

  2. 如果我想进入其他项目中的代码 - 它不像代码一样简单,调试就更困难了吗?还是它?

  3. 别的东西我还没有想到的......

因此,虽然我的想法玩,我想我会问怎么你们会设置它。

主项目和2个开源项目都在不同的SVN仓库中。 开放源代码项目我不会每天都得到新的主干,而是在发布上进行修复。

感谢

回答

4

1)您可以参考之间的不同构建配置如果您通过编辑.csproj的文件做手工切换。

csproj文件是一个MSBuild脚本,它是XML。如果你浏览它,你会发现一个<ItemGroup>元素,其中包含一堆<引用>元素。您可以添加一个条件,这些参考元素像这样的一个:

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

的包括属性可以包含的组件,这不一定是为调试不同的发行版本的二进制文件的完整强名称。在这种情况下,您可以添加一个<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文件。

+0

1.有趣的,我会调查它 2.问题是,我认为,当调试由于优化等调试和发布版本之间存在差异。 感谢您的答复,但。 – 2010-01-14 17:08:25

+0

回复:2 - 如果发布版本是在完整的调试符号打开的情况下完成的(因为你有源代码,你可以自己动手做),那么即使在发布模式下,你也应该没有问题。由于像你说的那样优化,你将无法一步到位,但总的来说,调试仍然可以正常工作。 – 2010-01-14 19:33:37

相关问题