Domanda

Sto provando ad aggiungere un file di criteri del publisher al GAC in base a questo thread ma sto riscontrando problemi quando provo ad aggiungere il file sul mio server di prova.

Ricevo " Impossibile trovare un modulo specificato nel manifest dell'assembly 'policy.3.0.assemblyname.dll' "

Il mio file delle politiche è simile al seguente:

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

Per favore aiutate!

Grazie

Ben


Ho ricreato il problema da zero con un nuovo assembly che non ha dipendenze (a parte le impostazioni predefinite) stesso - tutto funziona bene sulla mia macchina di sviluppo locale (e reindirizza anche bene) ma dà lo stesso errore aggiungendo il file delle politiche al GAC sul server!

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

collegato nel modo seguente

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

Per favore aiutate!

È stato utile?

Soluzione

Wow - ok capito.

Avrei dovuto prestare maggiore attenzione a cosa significasse esattamente

(MSDN) Come: Creare una politica del publisher

  

Nota importante: la politica del publisher   assembly non può essere aggiunto al globale   cache dell'assembly a meno che l'originale   il file delle norme del publisher si trova in   la stessa directory dell'assembly.

Questo requisito è, francamente, così bizzarro che non si è registrato. Il file della politica originale, che è stato compilato nell'assembly che sto provando ad aggiungere a gac, deve trovarsi nella stessa cartella dell'assembly della politica quando si aggiunge l'assembly della politica.

Altri suggerimenti

Ok ... voglio solo controllare alcune nozioni di base ....

Hai sicuramente installato entrambe le versioni dell'assembly dipendente su GAC?

E hai verificato che i numeri di versione nell'attributo [assembly: AssemblyVersion ()] sono corretti.

E hai usato [assembly: AssemblyVersion ()] e NOT [assembly: AssemblyFileVersion (" 1.0.0.1 ") ].

Aggiornamento: errore mio, hai solo bisogno dell'ultima versione dell'assembly nel GAC. L'ho appena provato qui e funziona. Il mio unico altro pensiero è verificare che i token della chiave pubblica siano gli stessi e che non sia stato scritto male il nome dell'assembly.

Inoltre, quando si genera il file delle politiche, assicurarsi di utilizzare l'opzione / version nel linker dell'assieme per impostare esplicitamente il numero di versione su 3.0.0.0 AND non specificare l'opzione / platform. per es.

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

Per aggiungere assembly di criteri al GAC utilizzando Wise, fai la stessa cosa che fai per aggiungere l'assembly a cui è destinato il criterio. Quindi aggiungi l'assieme delle politiche alla "Global Assembly Cache" in Wise e fintanto che il file delle politiche (.config) si trova nella stessa posizione sulla macchina, Wise lo aggiungerà automaticamente anche a GAC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top