Introducción
Problemas de las bibliotecas de clases portables pueden producirse después de instalar Microsoft Visual Studio 2012 Update 2. Este artículo describe los problemas y sus soluciones.
Problema 1
Síntomas
Cuando utiliza recursos para generar un proyecto de biblioteca de clases Portable después de instalar Visual Studio 2012 actualización 2, puede recibir los mensajes de error siguientes:
No se puede encontrar ningún método de extensión 'Ensamblado' que acepte un primer argumento de tipo 'System.Type' y 'System.Type' no contiene una definición para 'Ensamblado' (¿falta una utilizando Directiva o una referencia de ensamblado?)
Nota: Recibes este error cuando se utiliza Microsoft Visual C#.
'Ensamblado' no es un miembro de 'System.Type'
Nota: Recibes este error cuando se utiliza Microsoft Visual Basic.
Este problema se produce cuando una de las siguientes plataformas de destino es en el proyecto:-
La de Microsoft.NET Framework 4.5 y .NET para aplicaciones de Windows Store
-
El.NET Framework 4.5 y Windows Phone 8
-
El.NET Framework 4.5, .NET para aplicaciones de almacén de Windows y Windows Phone 8
Solución alternativa
Para evitar este problema, corrija el código generado por el diseñador del archivo de recursos. Para ello, haga doble clic en el mensaje de error y, a continuación, siga estos pasos:
Para Visual C#
-
Agregue la siguiente directiva using:
using System.Reflection;
-
Busque el código siguiente:
typeof(Resource1).Assembly
Reemplace el código con el código siguiente:
typeof(Resource1).GetTypeInfo().Assembly
El código siguiente es un ejemplo que tiene este 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
-
Agregue la siguiente directiva using:
Imports System.Reflection;
-
Busque el código siguiente:
GetType(Resource1).Assembly
Reemplace el código con el código siguiente:
GetType(Resource1).GetTypeInfo().Assembly
El código siguiente es un ejemplo que tiene este 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
Síntomas
No puede utilizar recursos para generar un proyecto de biblioteca de clases Portable después de instalar Visual Studio 2012 Update 2. Además, puede recibir uno de los muchos mensajes de error diferentes. Por ejemplo, puede recibir uno de los siguientes mensajes de error:
El tipo 'System.Net.HttpStatusCode' se define en un ensamblado que no se hace referencia. Debe agregar una referencia al ensamblado ' System.Net, versión = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'.
No se puede convertir implícitamente el tipo 'System.Net.HttpStatusCode' a ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]'
Tenga en cuenta que este problema se produce cuando una de las siguientes plataformas de destino es en el proyecto:
-
El.NET Framework 4.5 y Windows Phone 8
-
El.NET Framework 4.5, .NET para aplicaciones de almacén de Windows y Windows Phone 8
Causa
Este problema se produce porque Visual Studio 2012 actualización 2 se instaló después de instalar el Windows Phone Software Development Kit (SDK) 8.0. Por lo tanto, se eliminaron los siguientes archivos:
-
%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
Solución alternativa
Para resolver este problema, ejecute el programa de reparación de 2012 de Visual Studio. Para ello, siga estos pasos:
-
Haga clic en Inicio, haga clic en Panel de Control, haga clic en programas y, a continuación, haga clic en programas y características.
-
(Ratón) en la versión de Visual Studio de 2012 que haya instalado y, a continuación, haga clic en cambiar.
-
Cuando se abre el Asistente de instalación de Visual Studio 2012, haga clic en Reparar .
Nota: Si configura un nuevo entorno de desarrollador, para evitar este problema, debe instalar Visual Studio 2012 actualización 2 antes de instalar el SDK de Windows Phone 8.0.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".