Ошибка добавления файла политики в GAC - PullRequest
0 голосов
/ 19 ноября 2008

Я пытаюсь добавить файл политики издателя в 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>

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

Спасибо

Ben


Я заново создал проблему с новой сборкой, которая сама по себе не имеет зависимостей (кроме значений по умолчанию) - все отлично работает на моей локальной машине разработки (и тоже перенаправляет нормально), но выдает ту же ошибку при добавлении файла политики в 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

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

Ответы [ 3 ]

3 голосов
/ 27 ноября 2008

Ух ты - хорошо, понял.

Я должен был уделить больше внимания именно тому, что это значит

(MSDN) Как создать политику издателя

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

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

1 голос
/ 19 ноября 2008

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

Вы определенно установили обе версии зависимой сборки в GAC?

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

И вы использовали [assembly: AssemblyVersion ()] и NOT [Assembly: AssemblyFileVersion ("1.0.0.1")].

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

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

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
         /keyfile:mykey.snk /version:3.0.0.0
0 голосов
/ 18 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...