2011-03-31 205 views
1

我有一組被組織這樣解的條件引用路徑...基於解決方案

Master Solution 
    - Proj A   
    - Proj B 
    - Proj X 
    - Proj Y 

SolutionAB 
    - Proj A 
    - Proj B 

SolutionXY 
    - Proj X 
    - Proj Y 

依賴

Proj A & B => Proj X & Y 

我需要的是有MasterSolution看本地項目引用,並且SolutionAB查看相同dll的完全arbritrary位置。我可以對.proj文件進行所需的任何更改,但我的移動項目能力有限。這些只是我必須處理的限制。

回答

0

庫引用存儲在項目文件中。由於項目之間共享解決方案,我不認爲有一個簡單的方法來做到這一點。

任何原因項目不能總是在文件的任意位置查找?

+0

是的,當你真的只想使用項目時,它很難與arbritrary dll一起工作,同時,其他人依賴於共享dll,所以你必須讓它們在文件系統上處於只讀狀態。那就是他們如何在我工作的地方做到這一點。 – 2011-04-02 06:28:34

3

你可以用導入的屬性文件做到這一點。由於引用位於項目文件中,因此可以將它們移動或將它們使用的屬性移動到單獨的.props文件中。

在單獨.props文件

<PropertyGroup> 
    <SomeAssemblyFolder 
    Condition="'$(SolutionName)' == 'Master'">PathTo/Master</SomeAssemblyFolder> 
    <SomeAssemblyFolder 
    Condition="'$(SolutionName)' == 'AB'">PathTo/AB</SomeAssemblyFolder> 
</PropertyGroup> 

在項目文件

<Reference Include="SomeAssembly"> 
    <HintPath>$(SomeAssemblyFolder)\SomeAssembly.dll</HintPath> 
</Reference> 

我想你可以只複製在每個項目文件中的屬性定義,如果你想要的,但我將它導入。如果您需要從命令行或其他解決方案文件構建,請記住提供合理的默認值,或者在命令行上提供區分屬性。

+0

您能否提供關於如何在C#項目中創建單獨的.props文件和導入.props文件的答案的更多信息,或者至少指向顯示此內容的鏈接。 – OutOFTouch 2014-11-26 18:16:33

+0

我在你的答案中使用你的例子嘗試了一個單獨的道具文件,出於某種原因,即使導入工作並且拋出錯誤,csproj也不會拾取道具文件中的路徑,如果我將屬性組與共享位置放在一起它然後工作的csproj文件,我不明白爲什麼值沒有被從導入的道具文件中拾取。 – OutOFTouch 2014-12-01 16:13:30

+0

這樣做的工作我有路徑指向錯誤的導入文件。 – OutOFTouch 2014-12-01 21:22:49

相關問題