Introdução
Portátil de bibliotecas de classe de problemas poderão ocorrer depois de instalar o Microsoft Visual Studio 2012 Update 2. Este artigo descreve os problemas e respectivas soluções.
Problema 1
Sintomas
Quando utilizar os recursos para criar um projecto de biblioteca de classes portátil depois de instalar o Visual Studio 2012 Update 2, poderá receber as seguintes mensagens de erro:
'System' não contém uma definição para 'Assembly' e não foi encontrado nenhum método de extensão 'Assembly' aceitar um primeiro argumento do tipo 'System' (falta um utilizando directiva ou de uma referência à assemblagem?)
Nota Receber este erro quando utiliza o Microsoft Visual c#.
'Assembly' não é um membro de 'System'
Nota Recebe este erro quando utiliza o Microsoft Visual Basic.
Este problema ocorre quando um dos seguintes plataformas destina-se no projecto:
-
O Microsoft .NET Framework 4.5 e o .NET para aplicações da loja Windows
-
O .NET Framework 4.5 e o Windows Phone 8
-
O .NET Framework 4.5, o .NET para aplicações de arquivo do Windows e Windows Phone 8
Solução alternativa
Para contornar este problema, corrija o código gerado pelo estruturador do ficheiro de recursos. Para tal, faça duplo clique sobre a mensagem de erro e, em seguida, siga estes passos:
No Visual c#
-
Adicione o seguinte utilizando a Directiva:
using System.Reflection;
-
Localize o seguinte código:
typeof(Resource1).Assembly
Substitua esse código com o seguinte código:
typeof(Resource1).GetTypeInfo().Assembly
O código seguinte é um exemplo que tem 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
-
Adicione o seguinte utilizando a Directiva:
Imports System.Reflection;
-
Localize o seguinte código:
GetType(Resource1).Assembly
Substitua esse código com o seguinte código:
GetType(Resource1).GetTypeInfo().Assembly
O código seguinte é um exemplo que tem 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
Sintomas
Não é possível utilizar recursos para criar um projecto de biblioteca de classes portátil depois de instalar o Visual Studio 2012 Update 2. Além disso, poderá receber uma das muitas mensagens de erro diferente. Por exemplo, poderá receber uma das seguintes mensagens de erro:
O tipo 'System.Net.HttpStatusCode' está definido numa assemblagem que não está referenciada. Tem de adicionar uma referência à assemblagem ' System.Net, versão = 2.0.5.0, idioma = neutro, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'.
Não é possível converter implicitamente o tipo 'System.Net.HttpStatusCode' para ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]'
Note que este problema ocorre quando um dos seguintes plataformas destina-se no projecto:
-
O .NET Framework 4.5 e o Windows Phone 8
-
O .NET Framework 4.5, o .NET para aplicações de arquivo do Windows e Windows Phone 8
Causa
Este problema ocorre porque o Visual Studio 2012 Update 2 foi instalado depois da instalação do Windows Phone Software Development Kit (SDK) 8.0. Por conseguinte, foram eliminados os seguintes ficheiros:
-
%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
Solução alternativa
Para resolver este problema, execute o programa de reparação do Visual Studio 2012. Para tal, siga estes passos:
-
Clique em Iniciar, clique em Painel de controlo, clique em programase, em seguida, clique em programas e funcionalidades.
-
A versão de 2012 Visual Studio instalada com o botão direito e, em seguida, clique em Alterar.
-
Quando abre o Assistente de configuração do Visual Studio 2012, clique em Reparar .
Nota Se configurar um novo ambiente de programação, para evitar este problema, deverá instalar o Visual Studio 2012 Update 2 antes de instalar o SDK do Windows Phone 8.0.
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".