Visual Studio 2008是否支持配置(调试/发布版本)特定引用?

时间:2011-08-14 09:14:32

标签: visual-studio visual-studio-2008 msbuild c++-cli projects-and-solutions

我有一个带有一个C ++ / CLI文件的原生C ++项目(用/ CLI编译的唯一文件),我想添加对C#DLL的引用。

调试和发布有单独的版本,但我似乎只能添加一个适用于所有配置的引用。参考搜索路径对话框包含一个警告,如果我尝试使用任何$ ConfigurationName类型参数,它们将只引用项目中的第一个配置。

所以我目前的想法是:

  • 在一个解决方案下将两个项目连接在一起,并添加对“项目”的引用,而不是DLL程序集。我的理解是,Visual Studio将匹配配置。不理想,因为我的项目和DLL由不同的领域“拥有”。
  • 一个用于调试的项目(仅使用调试配置)和一个发布项目(只有一个发布配置),但感觉就像一个躲闪。

在Visual Studio 2008中实现配置特定引用的任何更简洁的方法?

1 个答案:

答案 0 :(得分:2)

我通常做的是根据配置将所有项目的输出路径设置为相同的位置。例如,对于发布版本,所有内容都会进入/ path / to / Release以及Debug to / path / to Debug。然后我手动编辑项目文件以包含一个包含以下内容的单独目标文件:

编辑显示如何使用条件选择带前缀的调试/发布dll

<-- file myDll.targets -->
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <ItemGroup  Condition=" '$(Configuration)' == 'Debug' ">
    <Reference Include="myDll_d">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup  Condition=" '$(Configuration)' == 'Release' ">
    <Reference Include="myDll">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
</Project>

然后在需要引用此dll的项目中包含目标文件:

<Import Project="myDll.targets"/>

由于Private=false msbuild不会尝试复制任何东西,它只会查找myDll.dll并在输出路径中找到它。

这不是特别干净但确实有效。目标文件也可以修改为引用不同的平台(x86 / x64)。

你的第一个想法可能是最常用的,因为它需要更少的麻烦 - 除了确实项目应该在同一个解决方案中(据我所知);