Еще один справочный вопрос ClickOnce GAC - PullRequest
3 голосов
/ 17 августа 2011

Я пытаюсь развернуть обновление и внезапно получаю сообщение о том, что log4net.dll версии 1.2.10.0 необходимо установить в GAC.Это версия с номером 38, и для меня установлено свойство «Копировать локально = true», а для параметра «Файлы приложения» задано значение «Включить».Я даже сдался и зарегистрировал log4net.dll в GAC на целевой машине.Самое смешное, что это обновление прекрасно работает на двух других компьютерах.

Я не уверен, что могло измениться с момента последнего обновления?

cheers

bob

edit: я нашел эту запись в файле манифеста для log4net.Его нет ни в одном из других файлов манифеста для других приложений, где я использую log4net?Тем не менее, если я пытаюсь изменить файл, clickonce знает и говорит, что установка повреждена.

<dependency>
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
  <assemblyIdentity name="log4net" version="1.2.10.0" publicKeyToken="692FBEA5521E1304" language="neutral" processorArchitecture="x86" />
</dependentAssembly>

1 Ответ

2 голосов
/ 18 августа 2011

Моим лучшим предположением будет то, что у вас есть две зависимости от log4net.dll. On поступает непосредственно из вашего проекта, на который он ссылается, и один является неявной ссылкой из другой библиотеки (обычно это библиотека, скомпилированная для .net 1.1, в моем случае это произошло с Crystal Reports). Я предполагаю, что эти две ссылки указывают на разные версии.

  1. Вы можете попытаться оставить log4net установленным на целевой машине, а исключить его из файлов приложений в проекте ClickOnce. Таким образом, это НЕ понадобится при установке ClickOnce (но мне не ясно, что произойдет после установки, при попытке запустить приложение).
  2. Если это не сработает или произойдет сбой во время выполнения, то, возможно, установите для параметра «Локальная и определенная версия» значение «Ложь» в проекте, который ссылается на то, что сработает. Но тогда log4net в GAC будет необходимым условием для запуска приложения, а это значит, что вам нужно установить .NET 1.1 (или 2.0 / 3.5 полный). 350MB обязательных компонентов достаточно тяжелые ...
  3. Ваша идея изменить файл манифеста после публикации может Работа. Чтобы ClickOnce не говорил, что установка повреждена, вы нужно отказаться от публикации с помощью MAGE (редактирование манифеста и Инструмент генерации, обычно доступный из группы меню Пуск из Visual Studio). Я не знаю, что произойдет, если ваше заявление действительно нужен log4net во время выполнения и не может его найти.
...