Pregunta

Estoy tratando de agregar un archivo de política de editor al gac según esto thread pero tengo problemas cuando intento agregar el archivo en mi servidor de prueba.

Obtengo " No se pudo encontrar un módulo especificado en el manifiesto del ensamblado 'policy.3.0.assemblyname.dll' "

Mi archivo de política se ve así:

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

Gracias

Ben


He recreado el problema desde cero con un nuevo ensamblado que no tiene dependencias (aparte de los valores predeterminados) en sí mismo: todo funciona bien en mi máquina de desarrollo local (y también redirige bien) pero da el mismo error al agregar el archivo de política al GAC en el 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>

vinculado de la siguiente manera

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

¿Fue útil?

Solución

Wow - ok lo tengo.

Debería haber prestado más atención a exactamente lo que esto significaba

(MSDN) Cómo: Crear una política de editor

  

Nota importante: la política del editor   el ensamblaje no se puede agregar a la global   caché de ensamblaje a menos que el original   el archivo de política del editor se encuentra en   el mismo directorio que el ensamblado.

Ese requisito es, francamente, tan extraño que no se registró. El archivo de política original, que se compiló en el ensamblado que estoy tratando de agregar al gac, debe estar en la misma carpeta que el ensamblado de políticas al agregar el ensamblado de políticas.

Otros consejos

Ok ... solo quiero ver algunos conceptos básicos ...

¿Definitivamente tiene ambas versiones del ensamblaje dependiente instalado en GAC?

¿Y ha verificado que los números de versión en el atributo [assembly: AssemblyVersion ()] son ??correctos.

Y usaste [ensamblaje: AssemblyVersion ()] y NOT [ensamblaje: AssemblyFileVersion (" 1.0.0.1 ") ].

Actualización: Mi error, solo necesita la última versión del ensamblaje en el GAC. Acabo de intentar eso aquí y funciona. Mis únicos otros pensamientos son verificar que los tokens de clave pública sean los mismos y que no hayas escrito mal el nombre del ensamblado.

Además, cuando genere el archivo de política, asegúrese de utilizar el modificador / version en el enlazador de ensamblaje para establecer explícitamente el número de versión en 3.0.0.0 AND no especifique el modificador / platform. por ejemplo,

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

Para agregar ensamblados de políticas al GAC usando Wise, debe hacer lo mismo que para agregar el ensamblado para el que está la política. Por lo tanto, agrega el ensamblado de políticas al " Caché de ensamblados global " en Wise, y siempre que tenga el archivo de política (.config) en la misma ubicación en la máquina, Wise también lo agregará automáticamente a GAC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top