Я должен был решить эту проблему в прошлом. В одном случае это была библиотека журналирования, которая была установлена в GAC, что означало, что элементу Reference просто нужно имя сборки. В другом случае мы установили библиотеку в файловую систему, создали раздел реестра, который содержал расположение (на случай, если пользователь стал милым и изменил место установки на нас), и использовал мастер шаблона проекта , чтобы посмотреть вверх раздел реестра и заполнить элемент замены, чтобы иметь правильное расположение в HintPath ссылки. (Примечание: подход мастера шаблонов требует, чтобы вы установили сборку вашего мастера в GAC, что, похоже, вы пытаетесь избежать ...)
Если вы не хотите, чтобы ваша библиотека была установлена в GAC или в определенном месте, подход включения сборки в проект - в значительной степени ваш единственный оставшийся вариант. С положительной стороны, развертывание шаблона вашего проекта довольно простое, и вам не нужно гадить с GAC, пользовательскими мастерами и т. Д. С другой стороны, если вы когда-либо создадите новую ревизию своей библиотеки, вашим пользователям потребуется обновить копию каждого проекта библиотеки.