2012-12-14 10 views
15

Sto avendo un problema con la risoluzione dell'Assemblea su una macchina dell'utente finale e credo che sia legato all'utilizzo di librerie di classi portatili ....Impossibile risolvere assemblee che utilizzano librerie di classi portatili

Ho un .NET Applicazione 4.0 che è stata originariamente scritta in Visual Studio 2010. Recentemente abbiamo aggiornato a Visual Studio 2012 e abbiamo creato alcuni progetti che sono librerie di classi portatili. Non credo che ora abbiamo bisogno di queste funzionalità, ma stiamo anche costruendo un'applicazione per Windows 8 Store che potrebbe beneficiare di queste librerie.

Quando compilo il mio progetto, cosa fa esattamente la funzione di libreria portatile? Mi aspetto che mi consenta di eseguirlo su diversi framework senza modifiche o ricompilazioni.

Quando guardo la biblioteca in riflettore dotPeek si mostra come l'attributo Piattaforma:

.NETPortable, Version = v4.0, Profilo = Profile5

E i riferimenti sembrano 2.0-ish:

mscorlib, versione = 2.0.5.0

sistema, Version = 2.0.5.0

System.Runtime.Serialization, Version = 2.0.5.0

Quando eseguo l'applicazione sulla macchina questo dell'utente finale, vedo un errore nel file di registro:

Impossibile caricare il file o il montaggio, 'System.Core, Version = 2.0.5.0 ...'

Googling System.Core 2.0.5.0 sembra riferirsi a Silverlight - che sembra essere uno di t ha preso di mira i quadri.

Questa macchina non dispone di Visual Studio installati, ma ha NET 4.0 (4.0.3 aggiornamento)

C'è qualcosa che dovrei fare in modo diverso per la compilazione, cosa dovrei indagare nelle mie dipendenze o qualcosa che dovrebbe stai cercando di installare sul computer dell'utente finale? A cosa si riferisce il 2.0.5.0?

+0

2.0.5.0 è la versione di destinazione per PCL, viene rimappata dal framework. Profile5 = Framework 4.0 e Store. Campo lungo: le app Store richiedono .NET 4.5. Attenzione per il profilo del cliente di 4.0 –

risposta

18

Per .NET 4, è necessario un aggiornamento (KB2468871) affinché le librerie di classi portatili funzionino. Dal KB Article:

Caratteristica 5

Modifiche al supporto librerie portatili. Queste modifiche includono aggiornamenti dell'API e modifiche del raccoglitore. Questo aggiornamento consente al CLR di vincolare correttamente a librerie portatili in modo che una singola DLL possa essere eseguita su .NET Framework 4 , su Silverlight, su Xbox o sul Windows Phone. Questo aggiornamento aggiunge API Silverlight pubbliche a .NET Framework 4 in nella stessa posizione. Le firme API rimarranno coerenti sulla piattaforma . Tutte le modifiche sono compatibili al 100% e lo standard non interromperà alcun codice esistente.

Vedere anche la sezione "Distribuzione di un'applicazione .NET Framework" di MSDN Portable Class Library Documentation.

MODIFICA: In realtà, se la macchina ha installato .NET 4.0.3 come si menziona, ciò dovrebbe essere sufficiente. Puoi ricontrollare per assicurarti che sia effettivamente installato?

+0

Molto strano. Ho scaricato http://www.microsoft.com/en-us/download/details.aspx?id=29053 (KB2600211 pubblicato il 03/04/12) ma quando l'ho eseguito ha detto che era "bloccato" o già installato. Ho scaricato KB2468871 (pubblicato il 6/08/11) ed è stato in grado di installare senza problemi. L'app ora funziona. – bryanbcook

+1

Ho ancora ricevuto questo errore con entrambi gli aggiornamenti dicendo "non si applica al tuo sistema". Questo è con VS 2012. Sigh. –

+0

Sembra che il compilatore abbia dei problemi con i PCL, per il mio problema: https://connect.microsoft.com/VisualStudio/feedback/details/780023/xaml-designer-throws-nullreferenceexception-object-reference-not-set- to-an-instance-of-an-object-sometimes-for-mvvm, https://connect.microsoft.com/VisualStudio/feedback/details/779370/vs2012-incorrectly-resolves-mscorlib-version-when-referencing- pcl-assembly –