简介
安装Microsoft Visual Studio 2012 更新 2后,可能会出现可移植类库问题。本文介绍了这些问题和他们的解决方法。
问题 1
症状
当您使用资源来生成可移植类库项目,安装了Visual Studio 2012 更新 2后时,可能会收到以下错误消息︰
System.Type' 不包含定义为程序集和找不到任何扩展方法程序集接受 System.Type' 类型的第一个参数 (是否缺少 using 指令或程序集引用?)
注意:当您使用 Microsoft Visual C# 时,您会收到此错误。
程序集不是 System.Type' 的成员
注意:当您使用 Microsoft Visual Basic,您会收到此错误。
以下平台之一在您的项目目标,则会出现此问题︰-
Microsoft.NET Framework 4.5 和 Windows 应用商店应用程序的.NET
-
.NET Framework 4.5 和 Windows Phone 8
-
.NET Framework 4.5,为 Windows 应用商店应用程序,.NET 和 Windows Phone 8
解决方法
若要变通解决此问题,请修复由设计器生成的代码的资源文件。若要执行此操作,双击错误消息,然后按照下列步骤操作︰
对于 C#
-
添加以下 using 指令︰
using System.Reflection;
-
找到下面的代码︰
typeof(Resource1).Assembly
该代码替换为以下代码︰
typeof(Resource1).GetTypeInfo().Assembly
下面的代码是一个具有此问题的示例︰
/// <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
-
添加以下 using 指令︰
Imports System.Reflection;
-
找到下面的代码︰
GetType(Resource1).Assembly
该代码替换为以下代码︰
GetType(Resource1).GetTypeInfo().Assembly
下面的代码是一个具有此问题的示例︰
'''<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
问题 2
症状
您不能使用资源来安装Visual Studio 2012 更新 2后生成可移植类库项目。此外,您可能会收到很多不同的错误消息之一。例如,您可能会收到以下错误消息之一︰
在一个未被引用的程序集定义类型 System.Net.HttpStatusCode。您必须添加对程序集的引用 ' System.Net、 版本 = 2.0.5.0,区域性程序 = 7cec85d7bea7798e,Retargetable = 是。
无法隐式转换为类型 System.Net.HttpStatusCode System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\。NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]
请注意以下平台之一针对项目中时,会发生此问题︰
-
.NET Framework 4.5 和 Windows Phone 8
-
.NET Framework 4.5,为 Windows 应用商店应用程序,.NET 和 Windows Phone 8
原因
因为 Windows Phone 软件开发工具包 (SDK) 8.0 安装后安装 Visual Studio 2012 更新 2,将出现此问题。因此,删除以下文件︰
-
%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
解决方法
若要解决此问题,请运行 Visual Studio 2012 修复程序。若要执行此操作,请执行以下步骤:
-
单击开始,单击控制面板,单击程序,然后单击程序和功能。
-
用鼠标右键单击已安装的 Visual Studio 2012 的版本,然后单击更改。
-
Visual Studio 2012 安装向导打开时,请单击修复。
注意:如果您设置了一个新的开发环境,若要避免此问题,您应该安装 Visual Studio 2012 更新 2 之前安装 Windows Phone 8.0 SDK。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。