2011-03-31 106 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