Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 设置使用多个外部开源项目的VS项目的最佳方法是什么?_Visual Studio_Multiple Projects - Fatal编程技术网

Visual studio 设置使用多个外部开源项目的VS项目的最佳方法是什么?

Visual studio 设置使用多个外部开源项目的VS项目的最佳方法是什么?,visual-studio,multiple-projects,Visual Studio,Multiple Projects,我有一个大型项目,我正在用更好的开源替代方案替换其中的两个部分。开源库相当大,但它们是稳定不变的,因此将源代码直接包含在我的VS项目中对我来说似乎毫无意义——加载更多,编译更多等等。我更愿意单独构建两个开源项目,在固定版本下,然后从主项目引用它们 但这给了我几个问题 我需要调试和发布版本的库-VS无法根据这些定义在引用之间切换 如果我想在其他项目中单步执行代码,调试就更难了——这并不像单步执行代码那么简单——或者是吗 还有一件我还没想到的事 所以当我在玩弄创意的时候,我想我会问你们是如何设置的

我有一个大型项目,我正在用更好的开源替代方案替换其中的两个部分。开源库相当大,但它们是稳定不变的,因此将源代码直接包含在我的VS项目中对我来说似乎毫无意义——加载更多,编译更多等等。我更愿意单独构建两个开源项目,在固定版本下,然后从主项目引用它们

但这给了我几个问题

  • 我需要调试和发布版本的库-VS无法根据这些定义在引用之间切换

  • 如果我想在其他项目中单步执行代码,调试就更难了——这并不像单步执行代码那么简单——或者是吗

  • 还有一件我还没想到的事

  • 所以当我在玩弄创意的时候,我想我会问你们是如何设置的

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

    谢谢

    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>
    
    
    c:\LibraryStuff\Debug\Library.dll
    
    提示路径也可以是相对的:

    <HintPath>..\..\LibraryStuff\Debug\Library.dll</HintPath>
    
    。\..\LibraryStuff\Debug\Library.dll
    
    [免责声明:尽管我从未对引用执行过此操作,但我不能保证不会出现问题。我很快对其进行了测试,它似乎工作正常,尽管visual studio确实会显示这两个引用,无论您选择了哪个构建配置(尽管它仅为匹配的配置类型构建一个)。如果他们有匹配的名称,它还会在第二个图标上显示一个警告图标,但编译似乎工作正常。]

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



    2)如果您将.pdb和源代码都放在正确的位置并且可以访问,那么即使您只引用了.dll文件,您也应该能够直接调试库中的代码。

    1。有趣的是,我将研究它。问题是,我认为在调试时,由于优化等原因,调试版本和发布版本之间存在差异。不过,感谢您的回复。Re:2-前提是发布版本启用了完全调试符号(并且您拥有源代码,我想您可以自己做)那么,即使在发布模式下,您也应该可以调试到库中。由于您所说的优化,您将无法分步执行每一行,但一般来说,调试仍然可以正常工作。