基于解的条件参考路径

时间:2011-03-31 16:38:50

标签: c# visual-studio-2010 msbuild

我有一组像这样组织的解决方案......

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文件进行任何更改,但我的移动项目能力有限。这些只是我必须要处理的限制。

2 个答案:

答案 0 :(得分: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>

我想如果你愿意,你可以在每个项目文件中复制属性定义,但我会将其移动到导入。如果需要从命令行或其他解决方案文件构建,请记住提供合理的默认值,或在命令行上提供区别属性。

答案 1 :(得分:0)

库引用存储在项目文件中。由于项目是在解决方案之间共享的,我认为没有一种简单的方法可以做到这一点。

项目无法始终查看文件的任意位置?