2014-10-28 44 views
1

我正在尋找一種方法來選擇性地包含一組第三方DLL基於指定的配置建立。版本1和版本2的引用無需更改,只需構建中包含的DLL即可。VB.Net - MSBuild配置 - 有選擇地包括文件建立與

更具體地說,版本1和版本2都包含相同的DLL,只是不同的版本。因此,他們都具有例如庫:

  • Library.Common.dll
  • Library.Orange.dll
  • Library.Red.dll

我的代碼然後引用接口/類/在這些DLL中定義的命令。我希望能夠輕鬆切換使用Version1版本的這些DLL作爲內容,並使用版本2的這些DLL版本作爲內容。

理想情況下,我可以這樣做:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_Version1|AnyCPU'"> 
    <OutputPath>bin\Release_Version1\</OutputPath> 
    <!-- Looking for the correct way to do the line below --> 
    <IncludeItemGroup name="Version1"/> 
</PropertyGroup> 
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_Version2|AnyCPU'"> 
    <OutputPath>bin\Release_Version2\</OutputPath> 
    <!-- Looking for the correct way to do the line below --> 
    <IncludeItemGroup name="Version2"/> 
</PropertyGroup> 

<ItemGroup Label="Version1"> 
    <Content Include="lib\Version1\*.dll" /> 
</ItemGroup> 
<ItemGroup Label="Version2"> 
    <Content Include="lib\Version2\*.dll" /> 
</ItemGroup> 

有誰有這個好的建議?

+0

「包含在構建中」非常模糊。您只顯示標記爲''的文件。沒有什麼特別的事情發生在他們身上,他們不包括在構建中。只有安裝者關心內容。他們應該發生什麼? – 2014-10-29 00:08:27

+0

感謝您的評論。我修改了一下以擴展我的意思,但我很可能錯誤地處理了這種情況。目前,我有兩個Project文件夾,一個用於Version1中的DLL,另一個用於Version2中的DLL。然後,我將Include \ Exclude這些Project文件夾,具體取決於我要構建的DLL版本。 – 2014-10-29 00:43:34

回答

1

根據您的代碼,您似乎希望爲每個ItemGroup元素添加一個條件,該值與$(Configuration)的值相關。

<ItemGroup Label="Version1" Condition=" '$(Configuration)' == 'Release_Version1' "> 
    <Content Include="lib\Version1\*.dll" /> 
</ItemGroup> 
<ItemGroup Label="Version2" Condition=" '$(Configuration)' == 'Release_Version2' "> 
    <Content Include="lib\Version2\*.dll" /> 
</ItemGroup> 
+0

完美,這正是我一直在尋找的。謝謝! – 2014-10-29 18:25:19