Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как разместить в GAC сборку , минуя gacutil.exe или Windows Installer?

#c_sharp #wpf


Вопрос:
Я использую в своем приложении сборку Extended WPF Toolkit и разворачиваю свое приложение
через ClickOnce, но при установке дистрибутива , подготовленного ClickOnce, получаю:

"Невозможно установить или запустить
приложение. Для этого приложения
необходимо сначала установить сборку
WPFToolkit.Extended Версия 1.6.0.0 в
глобальный кэш сборок (GAC)."

При попытке зарегистрировать сборку с помощью gacutil.exe получаю сообщение:

Microsoft (R) .NET Global Assembly
Cache Utility.  Version 3.5.30729.1
Copyright (c) Microsoft Corporation. 
All rights reserved.
Failure adding assembly to the cache: 
Сборка создана в более поздней версии
среды выполнения чем текущая, и не
может быть загружена.

Приложение без инсталлера нормально запускается, но я хотел опробовать сделать обновление
программы, а в ClickOnce оно вроде как реализовано. Windows Installer же регистрирует
сборку в GAC , но тогда надо что-то другое придумать с обновлениями.     


Ответы

Ответ 1



Первоначальная проблема именно в том, что сборка, отмеченная Copy Local, не копируется в папку bin. Это вызвано старым багов в студии - для референсов, добавленных из GAC, в свойствах отображается Copy Local = true, но при билде сборки на самом деле не копируются. Для обхода бага достаточно поменять Copy Local на false, и потом обратно на true. Это добавит в csproj-файл элемент True: {01C58D27-9818-45D6-A0B6-8EF765CA9397} CoreServices %28CoreServices\CoreServices%29 True Баг в том, что при добавлении новой сборки Copy Local проставляется в true по умолчанию. Но при этом сам флаг не сохраняется в файл проекта. При билде же студия использует флаг из файла проекта, и при его отсутствии - пропускает сборки из GAC. Пост на MSDN Blogs - The "Copy Local" Bug in Visual Studio В новых версиях студии это исправлено, по крайней мере на 2013 Update 4 баг не воспроизводится.

Ответ 2



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

Комментариев нет:

Отправить комментарий