Можно ли добавлять / обновлять сборки в GAC через пакет Nuget?

Nuget, без сомнения, является чрезвычайно эффективной системой упаковки и распределения. Однако есть некоторые случаи, когда управление файлами сборки становится громоздким. Это особенно очевидно для веб-приложений, где многие (30+) вложенные приложения на сайте настроены на наследование ссылок. В моем случае одна точка наследования желательна из-за простоты обновления библиотеки для всех дочерних проектов. Для меня стало проблематичным надежно хранить их сборки в корневом каталоге. В попытке помочь управлять этим я хотел бы использовать GAC для этих конкретных библиотек..

есть ли способ установить / обновить эти библиотеки в GAC с помощью сценария пакета nuget? Я всегда могу прибегнуть к традиционным средствам, но я хотел бы воспользоваться Nuget для этого, если это возможно. Сборка будет добавлена к серверу GAC, но целью пакета будет позволить разработчикам легко установить сборку в свой локальный GAC и поддерживать ту же ссылку между локальными / серверными средами.

1 ответов


вы можете установить сборки в GAC с помощью сценария PowerShell из PowerShell GAC, поэтому ваша установка.PS1 script определенно может это сделать.

однако слово предостережения оправдано; делая это, вероятно, не даст большинству людей поведение, которое они хотят. Каждый проект будет использовать ссылку на строгое имя для определенной версии. Только потому, что один проект обновляет пакет, не означает, что другие проекты будут обновлять свои пакеты и не будут использовать новой версии в GAC - они будут использовать один они сильно обязаны, если сборка содержит полис обязательного указания новая версия заменяет старую, и в этом случае версия проекта использует не совпадать с NuGet версии считает устанавливается!

таким образом, может стать очень трудно рассуждать о том, какая именно версия сборки используется. Обычно вы можете просто посмотреть на установленные пакеты nuget и сразу узнать, что у вас есть полученный.

в моем случае мы используем nuget для хранения двоичных файлов вне Git, но некоторые из двоичных файлов включают конструктор WinForms, который очень, очень сердится, если сборки не находятся в GAC. У нас были бесконечные проблемы снова и снова, пока мы просто не укусили пулю и не поместили сборки в GAC. Теперь он работает безупречно. Таким образом, мы регистрируем наши частные пользовательские сборки в GAC через nuget, чтобы он автоматически загружал и регистрировал их, но у нас есть одно решение и гарантия что все проекты модернизируются одновременно.