Я собираю шаблонный проект в Visual Studio для использования в моем отделе. Проект должен ссылаться на некоторые общие библиотеки, которые хранятся в другом месте в TFS. Проблема в том, что шаблон может использоваться в самых разных местах, и у меня возникают проблемы с надежной настройкой HintPath для обработки всех местоположений.
Шаблонный проект должен иметь возможность находить общие библиотеки как локально, так и в TFS для использования в сборках. В настоящее время в наших существующих приложениях ссылки выглядят так:
<Reference Include="Company.Common">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
Но количество родителей, которые необходимо пройти, чтобы добраться до корня, может варьироваться.
Вместо установки 50 условных путей для ../, ../../, ../../../ и т. д. моей первой мыслью было установить абсолютную ссылку. Рабочие папки стандартизированы в нашей организации, поэтому локально ссылку всегда можно найти в C:\Projects\Core Components\...
Но это не будет работать для серверных сборок. Итак, я думаю, мне нужна какая-то переменная среды, которая работает с $/. Я представляю что-то вроде этого:
<Choose>
<When Condition="Exists('C:\Projects')">
<ItemGroup>
<Reference Include="Company.Common">
<HintPath>C:\Projects\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Company.Common">
<HintPath>$(TFSRoot)\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
</ItemGroup>
</Otherwise>
</Choose>
Но я не могу понять, как это сделать.
Обновлять:
В конце концов, мы настроили внутренний сервер Nuget. Я предлагаю всем, кто столкнулся с той же дилеммой, просто разобраться с любой бюрократической волокитой, которая мешает вам настроить Nuget. Мы провели 3 года, живя с этим хакерским способом ведения дел, и всегда были какие-то новые морщинки, требующие ручного вмешательства.