Можно представить свойства тот же путь как поля. Для определения дополнительной информации как только для чтения или только для записи, можно использовать
+Name:string {ТОЛЬКО ДЛЯ ЧТЕНИЯ}
Найдите место для хранения сборок. Например, я храню основные сборки .Net следующим образом:
<ветка
> \ NetFX \ 2.0527 \
* <ветка
> \ NetFX \ 3.0 \
* <ветка
> \ NetFX \ 3.5 \
* <ветка
> \ NetFX \ Silverlight 2 \
* > \ NetFX \ Silverlight 3 \
*
Используйте свойство ReferencePath в MSBuild (или AdditionalReferencePath в Team Build), чтобы указать ваши проекты на соответствующие пути. Для простоты и удобства обслуживания у меня есть 1 файл * .targets, который знает обо всех таких каталогах; все мои проекты Импортируйте этот файл.
РЕДАКТИРОВАТЬ
В ответ на обновление в вопросе позвольте мне добавить еще один шаг:
4) Убедитесь, что каждая ссылка на сборку в каждый файл проекта использует полное строгое имя .Net и ничего больше .
Плохо:
<Reference Include="Microsoft.SqlServer.Smo">
<SpecificVersion`>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft SQL Server\100\Shared\Microsoft.SqlServer.Smo.dll</HintPath>
</Reference>
Хорошо:
<Reference Include="Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
Преимущества последнего формата:
Если добавить к тому, что говорят все остальные, это в основном сводится к двум вещам:
Как указывает Ричард Берг, вы можете использовать ReferencePath и / или AdditionalReferencePath, чтобы помочь решить №2. Если вы используете msbuild в процессе сборки (в нашем случае мы используем CruiseControl вместо MS Team Build), вы также можете передать ему ReferencePath в командной строке. Чтобы решить №1, я обнаружил, что svn: externals может быть полезным (если вы используете SVN).
Мой опыт работы с Maven показывает, что для большинства целей это слишком много.
У меня обычно есть отдельная структура папок в системе управления версиями для внешних или внутренних зависимостей, и эти фильтры имеют сборки в соответствии с номером сборки или версии, например
public \ External \ libraries \ Nunit \ 2.6 \
или
Public \ Internal \ libraries \ Logger \ 5.4.312 \
и внутри решений все проекты, которым необходимо использовать любую из зависимостей, просто добавляют ссылку на эти сборки в общедоступные внутренние или внешние папки.