我的解决方案如下:
src/Project1 src/Project2 src/Project... bin/*.{dll,exe} lib/Debug/*.dll lib/Release/*.dll
所有项目都设置为构建到顶级bin目录。我在lib文件夹中包含了许多第三方库依赖项,我喜欢在这里使用它们,然后它们与源代码库中的软件一起进行版本控制。
通常我让每个项目都添加对库的Debug版本的引用,但是当它发布时,我必须手动更改所有引用以指向Release版本。
我的问题是,有没有办法让Visual Studio根据构建配置自动选择DLL?
答案 0 :(得分:10)
我想你在谈论C#?在这种情况下,您可以手动调整项目文件以引用正确的库,如下所示:
<Reference Include="Debug\XXX" Condition="'$(Configuration)'=='Debug'"/>
<Reference Include="Release\XXX" Condition="'$(Configuration)'=='Platform'"/>
或者如果目录名称与配置名称匹配,您甚至可以这样做:
<Reference Include="$(Configuration)\XXX"/>
如果需要,您也可以以相同的方式提取平台名称
答案 1 :(得分:2)
修改项目文件中的MSBuild设置,并为引用添加条件。 像这样:
<Reference Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<HintPath>D:\debug\libdll</HintPath>
</Reference>
<Reference Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<HintPath>D:\release\lib.dll</HintPath>
</Reference>
一些参考信息:
答案 2 :(得分:1)
转到工具 - >选项 - &gt;项目和解决方案 - &gt; VC ++目录
使用$(Configuration)
变量指定正确的文件夹
e.g。如果要在发布模式下使用 C:\ mystuff \ lib \ Release ,而在调试模式下使用 C:\ mystuff \ lib \ Debug ,请添加以下行到图书馆文件:
C:\mystuff\lib\$(Configuration)
此处$(Configuration)
是调试或发布
答案 3 :(得分:0)
与上面的@stijn的#2解决方案类似,但是以HintPath方式显示:
<Reference Include="CoolWidget">
<HintPath>..\..\coolWidgetPath\bin\$(Configuration)\CoolWidget.dll</HintPath>
</Reference>