Introduzione

Problemi di librerie di classi portabile possono verificarsi dopo l'installazione di Microsoft Visual Studio 2012 Update 2. In questo articolo vengono descritti i problemi e le relative soluzioni.

Problema 1

Sintomi

Quando si utilizzano risorse di compilare un progetto libreria di classi portabile dopo l'installazione di Visual Studio 2012 Update 2, venga visualizzato i messaggi di errore seguente:

'Type' non contiene una definizione per 'Assembly' e non Impossibile trovare alcun metodo di estensione 'Assembly' accetta un primo argomento di tipo 'Type' (probabilmente manca un utilizzo della direttiva o un riferimento all'assembly?)

Nota: Questo errore viene visualizzato quando si utilizza Microsoft Visual C#.

'Assembly' non è un membro di 'Type'

Nota: Questo errore viene visualizzato quando si utilizza Microsoft Visual Basic.Questo problema si verifica quando nel progetto di destinazione una delle seguenti piattaforme:

  • Microsoft .NET Framework 4.5 e .NET per applicazioni Windows Store

  • .NET Framework 4.5 e Windows Phone 8

  • .NET Framework 4.5, .NET per applicazioni Windows Store e Windows Phone 8

Soluzione alternativa

Per risolvere questo problema, correggere il codice generato da progettazione del file di risorse. A questo scopo, fare doppio clic sul messaggio di errore, attenersi alla seguente procedura:

Per Visual C#

  1. Aggiungere la seguente direttiva using:

    using System.Reflection;
  2. Individuare il codice riportato di seguito:

    typeof(Resource1).Assembly

    Sostituire il codice con il codice riportato di seguito:

    typeof(Resource1).GetTypeInfo().Assembly

Il codice riportato di seguito è riportato un esempio che presenta questo problema:

        /// <summary>         ///   Returns the cached ResourceManager instance used by this class.        /// </summary>        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Resources.ResourceManager ResourceManager {        get {                if (object.ReferenceEquals(resourceMan, null)) {                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PortableClassLibrary2.Resource1", typeof(Resource1).Assembly);                    resourceMan = temp;                }                return resourceMan;            }        }

Visual Basic

  1. Aggiungere la seguente direttiva using:

    Imports System.Reflection;
  2. Individuare il codice riportato di seguito:

    GetType(Resource1).Assembly

    Sostituire il codice con il codice riportato di seguito:

    GetType(Resource1).GetTypeInfo().Assembly

Il codice riportato di seguito è riportato un esempio che presenta questo problema:

        '''<summary>        '''  Returns the cached ResourceManager instance used by this class.        '''</summary>        <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _        Friend Shared ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager            Get                If Object.ReferenceEquals(resourceMan, Nothing) Then                    Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("PortableClassLibrary1.Resource1", GetType(Resource1).Assembly)                    resourceMan = temp                End If                Return resourceMan            End Get        End Property

Problema 2

Sintomi

È possibile utilizzare le risorse per generare un progetto libreria di classi portabile dopo l'installazione di Visual Studio 2012 Update 2. Inoltre, si verifichi uno dei molti diversi messaggi di errore. Ad esempio, venga visualizzato uno dei seguenti messaggi di errore:

Il tipo 'System.Net.HttpStatusCode' è definito in un assembly che non si fa riferimento. È necessario aggiungere un riferimento all'assembly ' System.Net, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'.

Impossibile convertire implicitamente il tipo 'System.Net.HttpStatusCode' a ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]'

Nota che questo problema si verifica quando nel progetto di destinazione una delle seguenti piattaforme:

  • .NET Framework 4.5 e Windows Phone 8

  • .NET Framework 4.5, .NET per applicazioni Windows Store e Windows Phone 8

Causa

Questo problema si verifica perché Visual Studio 2012 Update 2 è stato installato dopo l'installazione di Windows Phone Software Development Kit (SDK) 8.0. Pertanto, sono stati eliminati i seguenti file:

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile49\System.Net.dll

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile49\System.ServiceModel.dll

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\System.Net.dll

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\System.ServiceModel.dll

Soluzione alternativa

Per risolvere questo problema, eseguire il programma di ripristino di Visual Studio 2012. A tale scopo, attenersi alla seguente procedura:

  1. Fare clic su Start, scegliere Pannello di controllo, fare clic su programmie quindi fare clic su programmi e funzionalità.

  2. Destro la versione di Visual Studio 2012 installati e quindi fare clic su Cambia.

  3. Quando si apre la procedura guidata di installazione di Visual Studio 2012, fare clic su Ripristina .

Nota: Se si imposta un nuovo ambiente di sviluppo, per evitare questo problema, è necessario installare Visual Studio 2012 Update 2 prima di installare il SDK di Windows Phone 8.0.

Stato

Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.