2009-12-31 136 views
3

的增加調試和發行版本我有我的解決方案奠定了如下庫到VS解決方案

src/Project1 
src/Project2 
src/Project... 
bin/*.{dll,exe} 
lib/Debug/*.dll 
lib/Release/*.dll

所有的項目都被設置爲建設頂級bin目錄。我在lib文件夾中包含了許多第三方庫依賴項,我喜歡將它們放在這裏,因爲它們隨後會與源代碼庫中的軟件一起版本化。

通常我有每個項目都添加了一個對庫的調試版本的引用,但是當涉及到發佈時,我必須手動將所有引用手動更改爲指向發佈版本。

我的問題是,有沒有辦法讓Visual Studio根據構建配置自動選擇DLL?

回答

9

我想你說的是C#?在這種情況下,您可以手動調整項目文件以引用正確的庫這樣的:

<Reference Include="Debug\XXX" Condition="'$(Configuration)'=='Debug'"/> 
<Reference Include="Release\XXX" Condition="'$(Configuration)'=='Platform'"/> 

,或者如果目錄名稱相匹配的配置名稱exaclty你甚至可以這樣做:

<Reference Include="$(Configuration)\XXX"/> 

,如果需要,你也可以拉在平臺名稱相同的方式

1

修改項目文件中的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> 
  • 首先編輯項目文件卸載它,然後按編輯PROJ文件。

一些參考信息:

1

進入工具 - >選項 - >項目和解決方案 - > VC++目錄

使用變量$(Configuration)指定正確的文件夾

例如,如果你想使用C:\的MyStuff \ LIB \在釋放模式時,鬆開,但C:\的MyStuff \ LIB \調試當在調試模式下,下面的行添加到庫文件

C:\mystuff\lib\$(Configuration)

這裏$(Configuration)或者是調試發佈

0

以上@斯泰恩的#2的解決方案類似,但顯示與HintPath方式是:

<Reference Include="CoolWidget"> 
    <HintPath>..\..\coolWidgetPath\bin\$(Configuration)\CoolWidget.dll</HintPath> 
</Reference>