MsBuild: изменение ссылок с ProjectReference на Reference - PullRequest
5 голосов
/ 20 августа 2010

В нашей среде у нас есть две внутренние структуры и отдельный веб-сайт. Во время разработки ссылки на внутренние фреймворки, как правило, устанавливаются как ссылки на проекты. Однако, как только мы переходим к выпуску, внутренние структуры устанавливаются в GAC, поскольку они используются для нескольких экземпляров веб-сайта на каждом сервере. Все ProjectReferences вручную изменены на References, а сборки веб-сайта и веб-сайт перекомпилированы и развернуты.

Я пытаюсь автоматизировать этот процесс. Каков наилучший способ справиться с этими проблемами? Я начал изучать MsBuild в попытке сделать это, но я совершенно сбит с толку. Любые указатели и / или предложения о том, как действовать?

Ответы [ 2 ]

3 голосов
/ 20 августа 2010

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

Пояснение:

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

См. эту ссылку для получения дополнительной информации о том, как среда выполнения находит ссылочные сборки:

К вашему сведению - я полагаю, вам рекомендуется не ссылочные сборки, которые физически находятся в GAC, и вместо этого вы должны ссылаться наименованная сборка до ее помещения в GAC (не путать с тем, должна ли сборка быть установленав GAC на компьютере конечного пользователя)

1 голос
/ 20 августа 2010

Если вы оставите ссылки на проекты в, MSBUILD скопирует все ссылки на проекты в виде библиотек DLL в каталог bin целевого веб-сайта, даже если вы установили эти библиотеки DLL в GAC, поэтому я предполагаю, что вы хотите изменить это в уровень выпуска - чтобы можно было сэкономить место.

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

Чтобы сделать это в MSBUILD, вам нужно создать пользовательское задание, которое может изменить файл проекта. Файл проекта представляет собой файл XML, поэтому вы можете использовать XPath в качестве своей пользовательской задачи в MSBUILD. В файле проекта вы найдете теги "" для проектов, на которые вы ссылаетесь. Вам нужно будет поменять их на теги "". Используйте существующие примеры тега в вашем проекте, чтобы увидеть, как он должен выглядеть

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

...