Introdução
Problemas de bibliotecas de classes portáteis podem ocorrer após a instalação da atualização 2 do Microsoft Visual Studio 2012. Este artigo descreve esses problemas e suas soluções alternativas.
Problema 1
Sintomas
Quando você usa recursos para criar um projeto de biblioteca de classes portátil após a instalação da atualização 2 do Visual Studio 2012, você pode receber as seguintes mensagens de erro:
'Type' não contém uma definição para 'Assembly' e nenhum método de extensão 'Assembly' aceitar um argumento do tipo 'System. Type' primeiro foi encontrado (está faltando um usando diretiva ou uma referência de assembly?)
Observação: Você recebe esse erro quando você usar o Microsoft Visual C#.
'Assembly' não é um membro de 'System. Type'
Observação: Você recebe esse erro quando você usar o Microsoft Visual Basic.
Esse problema ocorre quando uma das seguintes plataformas destina-se em seu projeto:
-
O Microsoft.NET Framework 4.5 e .NET para aplicativos da Windows Store
-
O.NET Framework 4.5 e Windows Phone 8
-
O.NET Framework 4.5, .NET para aplicativos da Windows Store e Windows Phone 8
Solução alternativa
Para contornar esse problema, corrija o código gerado pelo designer do arquivo de recursos. Para fazer isso, clique duas vezes a mensagem de erro e, em seguida, execute as seguintes etapas:
Para o Visual C#
-
Adicione o seguinte usando a diretiva:
using System.Reflection;
-
Localize o código a seguir:
typeof(Resource1).Assembly
Substitua o código com o seguinte código:
typeof(Resource1).GetTypeInfo().Assembly
O código a seguir é um exemplo que tem esse 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 usando a diretiva:
Imports System.Reflection;
-
Localize o código a seguir:
GetType(Resource1).Assembly
Substitua o código com o seguinte código:
GetType(Resource1).GetTypeInfo().Assembly
O código a seguir é um exemplo que tem esse 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
Você não pode usar recursos para criar um projeto de biblioteca de classes portátil após a instalação da atualização 2 do Visual Studio 2012. Além disso, você pode receber uma das muitas mensagens de erro diferentes. Por exemplo, você pode receber uma das seguintes mensagens de erro:
O tipo 'System.Net.HttpStatusCode' está definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly ' System.Net, versão = 2.0.5.0, Culture = neutral, 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]'
Observe que esse problema ocorre quando uma das seguintes plataformas destina-se em seu projeto:
-
O.NET Framework 4.5 e Windows Phone 8
-
O.NET Framework 4.5, .NET para aplicativos da Windows Store e Windows Phone 8
Causa
Esse problema ocorre porque o Visual Studio 2012 Update 2 foi instalado depois que o Windows Phone Software Development Kit (SDK) 8.0 foi instalado. Portanto, os seguintes arquivos foram excluídos:
-
%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 esse problema, execute o programa de reparação do Visual Studio 2012. Para fazer isso, execute as seguintes etapas:
-
Clique em Iniciar, clique em Painel de controle, clique em programase, em seguida, clique em programas e recursos.
-
Clique com botão direito a versão do Visual Studio 2012 que você instalou e, em seguida, clique em Alterar.
-
Clique em Reparar quando é aberto o Assistente de instalação do Visual Studio 2012.
Observação: Se você configurar um novo ambiente de desenvolvedor, para evitar esse problema, você deve instalar o Visual Studio 2012 Update 2 antes de instalar o SDK do Windows Phone 8.0.
Status
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".