6

Ho un progetto C# in Visual Studio 2012, che è un PCL, il targeting queste piattaforme (ho tolto i nomi):Perché la DLL da un progetto PCL prevede un assembly x86?

enter image description here

Quando provo ad aggiungere il dll, da una build di successo, ad un progetto di Silverlight 5 in VS2013, sto ottenendo questo avviso e non sembra essere effettivamente aggiunto:

Attenzione 1 C'era una mancata corrispondenza tra l'architettura del processore del progetto in fase di costruzione "MSIL" e l'architettura del processore del riferimento "[Nome]", "x86". Questa mancata corrispondenza potrebbe causare errori di runtime. Si prega di prendere in considerazione la possibilità di modificare l'architettura del processore di destinazione del progetto tramite Configuration Manager in modo da allineare le architetture del processore tra il progetto e i riferimenti, o prendere una dipendenza dai riferimenti con un'architettura del processore che corrisponda all'architettura del processore di destinazione del progetto.

enter image description here

Perché un PCL presenterà come x86?

+4

Il tuo avviso è minuscolo, per favore copia/incolla il messaggio di errore nella tua domanda corpo –

+2

eddie_cat, l'ho aggiunto, anche se puoi anche fare clic con il tasto destro sull'immagine e visualizzare l'immagine (almeno in Firefox). – Jake

+1

Non penso sia normale che la configurazione e la piattaforma siano N/D. Prova a creare una nuova configurazione con l'impostazione AnyCPU. –

risposta

0

Quando si dispone di un progetto PCL per più destinazioni e si desidera referenziare l'output .dll in altri progetti, assicurarsi di scegliere la giusta .dll con la compilazione corretta.

Ad esempio:

  • si dispone di un progetto di Business che è PCL per WP 8 e SL 5.
  • hai 2 progetti che fanno riferimento al dll dal progetto di business sopra
    • SL proj
    • WP 8 proj

Nel pro WindowsPhone Quando si va ad aggiungere riferimento si dovrebbe scegliere quello che è stato compilato per ARM [si noti che se si vuole eseguire l'emulatore si dovrebbe scegliere la versione x86, perché l'emulatore non è ARM]. Se aggiungi la versione x86 e nel Configuration Manager la imposti su ARM, Visual Studio ti avviserà con lo stesso errore che hai, perché eseguirai un codice ARM e farai riferimento a un codice x86.

Controllare se il file .dll che si aggiunge corrisponde al gestore di configurazione. Cambialo per l'architettura giusta che vuoi invece di "Multiple platform" vs "Any CPU"