2011-08-29 24 views
1

我們正在使用一些第三方庫,它們必須從項目中引用一些依賴項。在一個標記元素中分組多個引用

因此,每個「csproj」文件將有一堆「參考」元素將始終是相同的。

有沒有辦法將這組元素分組到一個標準元素中,這個元素可以在所有csproj文件中使用?

E.g:

<ABunchOfReferences> 
    <Reference Include="Reference1" /> 
    <Reference Include="Reference2" /> 
    <Reference Include="Reference3" /> 
</ABunchOfReferences> 
... 
<ItemGroup> 
    <ABunchOfReferences/> 
    <Reference Include="System" /> 
    <Reference Include="System.Core" /> 
    ... 
</ItemGroup> 

「ABunchOfReferences」是一個種宏由用於將被擴展爲3「參考」元素時,所述所有csprojs全局定義和包括在內。

在此先感謝您的任何想法。

+2

爲什麼不直接在導入文件中定義所有共享引用。 –

+0

@Brian:感謝這個想法,但我想在一個文件中定義多個組,以避免有大量文件需要維護,並且每次出現一堆新的依賴關係時都必須創建一個新文件;但如果不存在其他解決方案,這確實是一種可接受的解決方法。 – Pragmateek

回答

1

你可以設置你的引用導入文件,然後有選擇地將它們包括在主文件,

在References.props

<ItemGroup> 
    <BunchOfReferences Include="Reference1" /> 
    <BunchOfReferences Include="Reference2" /> 
    <BunchOfReferences Include="Reference3" /> 
</ItemGroup> 
<ItemGroup> 
    <MoreReferences Include="MoreReference1" /> 
    <MoreReferences Include="MoreReference2" /> 
    <MoreReferences Include="MoreReference3" /> 
</ItemGroup> 

...然後在單獨的項目文件

<Import Project="PathTo\References.props" /> 

<ItemGroup> 
    <Reference Include="System" /> 
    <References Include="@(BunchOfReferences)" /> 
    <References Include="@(MoreReferences)" /> 
</ItemGroup> 
1

你可以把你所有的「ABunchOfReferences」在一個單獨的文件,然後包括你的ItemGroup內部的文件是這樣的:

<ItemGroup> 
    <Import Project="PathToFile\yourBunchofReferenceFile" /> 
    <Reference Include="System" /> 
... 
</ItemGroup> 
+0

感謝您關注此問題;如果我理解得很好,這是Brian解決方案的一個例子嗎? – Pragmateek

+0

是的,他是對的。我忽略了這個答案和你對它的迴應。要回答您的迴應,您可以在參考標記中設置「條件」屬性,如果您想有條件地添加參考。 – Arun

+0

設置「條件」將強制傳遞原始msbuild腳本中的附加信息,以便激活正確的條件以僅包含與其匹配的引用子集。看起來很尷尬。我擔心我將不得不使用多個文件解決方案。 – Pragmateek

相關問題