Каков наилучший способ включить ссылки на мои собственные сборки в шаблон проекта? - PullRequest
5 голосов
/ 12 августа 2010

Мы разработали библиотеку на C #, и теперь я хочу создать шаблон проекта, который поможет правильно использовать библиотеку.

Я хочу, чтобы в новых проектах была ссылка на сборку библиотеки, но я бы предпочелне нужно развертывать сборку в GAC или зависеть от сборки, находящейся в каком-то определенном месте.

Я думаю о том, чтобы включить .dll в файл .zip шаблона проекта.Это означает, что он окажется где-то внутри папки проектов новых проектов.Возможно, в папке с именем Lib.Тогда справочная подсказка в файле проекта может указывать на эту папку.Это хорошая идея?С какими проблемами я могу столкнуться в будущем?

Возможно, существует какой-то механизм для включения таких сторонних библиотек в шаблоны проектов, о которых я не знаю?Как вы справились с этим?Конечно, я не первый.

1 Ответ

3 голосов
/ 25 февраля 2011

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

Если вы не хотите, чтобы ваша библиотека была установлена ​​в GAC или в определенном месте, подход включения сборки в проект - в значительной степени ваш единственный оставшийся вариант. С положительной стороны, развертывание шаблона вашего проекта довольно простое, и вам не нужно гадить с GAC, пользовательскими мастерами и т. Д. С другой стороны, если вы когда-либо создадите новую ревизию своей библиотеки, вашим пользователям потребуется обновить копию каждого проекта библиотеки.

...