简介

安装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 产品中的问题。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×