Pergunta

Estou tentando adicionar um arquivo de política do editor ao GAC de acordo com este fio Mas estou tendo problemas quando tento adicionar o arquivo no meu servidor de teste.

Eu recebo "um módulo especificado no manifesto da Assembléia 'Política.3.0.ASSEMBLYNAME.DLL' não foi possível encontrar"

Meu arquivo de política se parece com o seguinte:

<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>

Por favor ajude!

Obrigado

Ben


Eu recriei o problema do zero com uma nova montagem que não tem dependência (além dos padrões) - tudo funciona bem na minha máquina de desenvolvimento local (e redireciona também bem), mas dá o mesmo erro adicionando o arquivo de política ao GAC No servidor!

<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>

ligado da seguinte maneira

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

Por favor ajude!

Foi útil?

Solução

Uau - ok entendeu.

Eu deveria ter prestado mais atenção exatamente ao que isso significava

(MSDN) Como: criar uma política de editores

NOTA IMPORTANTE: A Assembléia da Política do Publicador não pode ser adicionada ao cache global da Assembléia, a menos que o arquivo de política original do editor esteja localizado no mesmo diretório que a Assembléia.

Esse requisito é, francamente, tão bizarro que não se registrou. O arquivo de política original, que foi compilado na Assembléia que estou tentando adicionar ao GAC, deve estar na mesma pasta que a Assembléia de Políticas ao adicionar a Assembléia de Políticas.

Outras dicas

Ok ... só quero verificar alguns básicos ....

Você definitivamente tem as duas versões da montagem dependente instalada no GAC?

E você verificou que os números da versão no atributo [Assembly: AssemblyVersion ()] estão corretos.

E você usou [Assembly: AssemblyVersion()] e NÃO conjunto: AssemblyFileVersion("1.0.0.1")].

Atualizar: Meu erro, você só precisa da versão mais recente da Assembléia no GAC. Eu apenas tentei isso aqui e funciona. Meus únicos outros pensamentos são verificar se os tokens de chave pública são os mesmos e que você não invadiu errado o nome da assembléia.

Além disso, quando você gerar o arquivo de política, certifique -se de usar a chave /versão no vinculador de montagem para definir explicitamente o número da versão como 3.0.0.0 E Não especifique o interruptor /plataforma. por exemplo

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

Para adicionar assembléias de políticas ao GAC usando o Wise, você faz a mesma coisa que faz para adicionar a Assembléia para a qual a política é. Assim, você adiciona a assembléia de políticas ao "cache de montagem global" em sábio e, desde que você tenha o arquivo de política (.config) no mesmo local da máquina, o Wise também o adicionará automaticamente ao GAC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top