Условные ссылочные пути на основе решения - PullRequest
1 голос
/ 31 марта 2011

У меня есть набор решений, организованных следующим образом ...

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 посмотреть на совершенно произвольное местоположение для тех же самых библиотек.Я могу внести любые необходимые изменения в файлы .proj, но мои возможности по перемещению проектов ограничены.Это только те ограничения, с которыми мне приходится работать.

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Вы можете сделать это с помощью импортированных файлов свойств.Поскольку ссылки находятся в файле проекта, вы можете переместить их или переместить используемые ими свойства в отдельный файл .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 голосов
/ 31 марта 2011

Библиотечные ссылки хранятся в файлах проекта. Поскольку проекты распределены между решениями, я не думаю, что есть простой способ сделать это.

По какой причине проекты не всегда могут искать файлы в произвольном месте?

...