Dotyczy
Visual Studio Ultimate 2012 Visual Studio Premium 2012 Visual Studio Express 2012 for Windows 8 Visual Studio Express 2012 for Windows Desktop Visual Studio Express 2012 for Windows Phone

Wprowadzenie

Przenośne problemy bibliotek klas mogą występować po zainstalowaniu programu Microsoft Visual Studio 2012 aktualizacji 2. W tym artykule opisano te problemy i ich rozwiązania.

Problem 1

Objawy

Kiedy używać zasobów zbudować projekt przenośny Biblioteka klas, po zainstalowaniu programu Visual Studio 2012 aktualizacji 2, może pojawić się następujący komunikat o błędzie:

"System.Type" nie zawiera definicji dla "Assembly" i ma rozszerzenie metody "Assembly" przyjmuje pierwszy argument typu "System.Type" można odnaleźć (czy brakuje using dyrektywa lub odwołania do zestawu?)

Uwaga Pojawi się błąd, gdy używasz Microsoft Visual C#.

"Assembly" nie jest członkiem "System.Type"

Uwaga Pojawi się błąd, gdy używasz programu Microsoft Visual Basic.Ten problem występuje, gdy jeden z następujących platform jest zadanie w projekcie:

  • Microsoft.NET Framework 4.5 i .NET dla Sklepu Windows

  • .NET Framework 4.5 i Windows Phone 8

  • .NET Framework 4.5, .NET dla Sklepu Windows i Windows Phone 8

Obejście problemu

Aby obejść ten problem, należy naprawić kod generowany przez projektanta pliku zasobów. Aby to zrobić, kliknij dwukrotnie komunikat o błędzie, a następnie wykonaj następujące czynności:

Program Visual C#

  1. Dodaj następujący za pomocą dyrektywy:

    using System.Reflection;
  2. Znajdź następujący kod:

    typeof(Resource1).Assembly

    Tego kodu zamień następujący kod:

    typeof(Resource1).GetTypeInfo().Assembly

Następujący kod jest przykładem, którego dotyczy ten problem:

        /// <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;            }        }

Języka Visual Basic

  1. Dodaj następujący za pomocą dyrektywy:

    Imports System.Reflection;
  2. Znajdź następujący kod:

    GetType(Resource1).Assembly

    Tego kodu zamień następujący kod:

    GetType(Resource1).GetTypeInfo().Assembly

Następujący kod jest przykładem, którego dotyczy ten problem:

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

Problem 2

Objawy

Nie można używać zasobów zbudować projekt przenośny Biblioteka klas, po zainstalowaniu programu Visual Studio 2012 aktualizacji 2. Ponadto może pojawić się jeden z wielu różnych komunikatów o błędach. Na przykład może pojawić się jeden z następujących komunikatów o błędzie:

Typu 'System.Net.HttpStatusCode' jest zdefiniowany w zestawie, który nie jest wywoływany. Należy dodać odwołanie do zestawu "System.Net, Version = 2.0.5.0, kultury = neutral, PublicKeyToken = 7cec85d7bea7798e Retargetable = Yes.

Nie można niejawnie przekonwertować typu 'System.Net.HttpStatusCode' ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll] "

Należy zauważyć, że ten problem występuje, gdy jeden z następujących platform jest zadanie w projekcie:

  • .NET Framework 4.5 i Windows Phone 8

  • .NET Framework 4.5, .NET dla Sklepu Windows i Windows Phone 8

Przyczyna

Ten problem występuje, ponieważ program Visual Studio 2012 aktualizacji 2 został zainstalowany po zainstalowaniu Windows Phone Software Development Kit (SDK) 8.0. W związku z tym zostały usunięte następujące pliki:

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

Obejście problemu

Aby rozwiązać ten problem, uruchom program naprawy programu Visual Studio 2012. Aby to zrobić, wykonaj następujące kroki:

  1. Kliknij przycisk Start, kliknij polecenie Panel sterowania, kliknij Programy, a następnie kliknij pozycję Programy i funkcje.

  2. Kliknij prawym przyciskiem myszy wersji programu Visual Studio 2012, który jest zainstalowany, a następnie kliknij przycisk Zmień.

  3. Po otwarciu kreatora Visual Studio 2012 Instalatora, kliknij przycisk Napraw .

Uwaga: Jeśli ustawione w nowym środowisku autora, aby uniknąć tego problemu, należy zainstalować program Visual Studio 2012 aktualizacji 2 przed zainstalowaniem zestawu SDK systemu Windows Phone 8.0.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.