Ошибка при добавлении файла политики в GAC.

StackOverflow https://stackoverflow.com/questions/302239

  •  08-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь добавить файл политики издателя в gac согласно этому нить но у меня возникают проблемы при попытке добавить файл на тестовый сервер.

Я получаю сообщение «Не удалось найти модуль, указанный в манифесте сборки «policy.3.0.assemblyname.dll»»

Мой файл политики выглядит так:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="*assemblyname*"
                          publicKeyToken="7a19eec6f55e2f84"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Пожалуйста помоги!

Спасибо

Бен


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

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="TestAsm"
                          publicKeyToken="5f55456fdcc9b528"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

связано следующим образом

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe /link:PublisherPolicy.xml /out:policy.3.0.TestAsm.dll /keyfile:..\..\key.snk /version:3.0.0.0
pause

Пожалуйста помоги!

Это было полезно?

Решение

Вау - ок, понял.

Мне следовало бы обратить больше внимания на то, что именно это означает.

(MSDN) Как:Создайте политику издателя

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

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

Другие советы

Хорошо... просто хочу проверить некоторые основы....

У вас точно установлены обе версии зависимой сборки в GAC?

И проверили ли вы, что номера версий в [сборке:Атрибут AssemblyVersion()] верен.

И вы использовали [сборку: Версия сборки()] и НЕТ [сборка: СборкаФайлВерсия("1.0.0.1")].

Обновлять: Моя ошибка, нужна только последняя версия сборки в GAC.Я только что попробовал это здесь, и это работает.Моя единственная мысль - проверить, совпадают ли токены открытого ключа и не ошиблись ли вы в имени сборки.

Также при создании файла политики обязательно используйте переключатель /version в компоновщике сборки, чтобы явно установить номер версии 3.0.0.0. И не указывайте переключатель /platform.например

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
         /keyfile:mykey.snk /version:3.0.0.0

Чтобы добавить сборки политики в GAC с помощью Wise, вы делаете то же самое, что и для добавления сборки, для которой предназначена политика.Таким образом, вы добавляете сборку политики в «Глобальный кэш сборок» в Wise, и пока у вас есть файл политики (.config) в том же месте на компьютере, Wise также автоматически добавит его в GAC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top