使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

简介

安装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#

  1. 添加以下 using 指令︰

    using System.Reflection;
  2. 找到下面的代码︰

    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

  1. 添加以下 using 指令︰

    Imports System.Reflection;
  2. 找到下面的代码︰

    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 修复程序。若要执行此操作,请执行以下步骤:

  1. 单击开始,单击控制面板,单击程序,然后单击程序和功能

  2. 用鼠标右键单击已安装的 Visual Studio 2012 的版本,然后单击更改

  3. Visual Studio 2012 安装向导打开时,请单击修复

注意:如果您设置了一个新的开发环境,若要避免此问题,您应该安装 Visual Studio 2012 更新 2 之前安装 Windows Phone 8.0 SDK。

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×