.NET Framework 4.5 RC 更新

发布日期:2012 年 5 月 31 日

要查看最新版本的自述文件,请单击此处

1..Net Framework 已知问题

1.1 .Net Framework 安装

1.1.1 .NET Framework 4.5 RC 语言包在 Windows 8 Release Preview 上不可用

.NET Framework 4.5 RC 语言包不能安装在 Windows 8 Release Preview 操作系统上,因为 .NET Framework 4.5 RC 是该操作系统的组件。.NET Framework 4.5 RC 语言包可以安装在较早的受支持的 Windows 版本上。

解决此问题的方法:

下载适用于 Windows 8 Release Preview 操作系统的语言包,或安装本地化版本的 Windows 8 Release Preview 以获取 .NET Framework 4.5 RC 的本地化资源。

1.2 .Net Framework 卸载

没有已知问题。

1.3 .Net Framework 产品问题

1.3.1 一般问题

1.3.1.1 安装 .NET Framework 4.5 以后,在 Visual Studio 2010 的生成中出现 MSB3270 警告

Visual Studio 2010 中的某些项目类型(例如 C++ 项目)可设置 Platform 属性,但不可设置 PlatformTarget 属性。不设置 PlatformTarget 时,MSBuild 将无法确定项目体系结构(例如 x86),而只能假定项目目标为“任意 CPU”并引发体系结构不匹配警告 MSB3270,即使项目和引用都是针对同一体系结构也是如此。

解决此问题的方法:

  • 项目文件中,将 PlatformTarget 属性设置为适当的值,例如:
    <PropertyGroup>
      <PlatformTarget>x86</PlatformTarget>
    </PropertyGroup>

- 或 -

  • 忽略警告。

- 或 -

  • 在项目文件中,禁止显示警告:
    <PropertyGroup>
      <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    </PropertyGroup>

1.3.1.2 .NET Framework 4.5 RC 二进制文件无法再分发

根据 .NET Framework 4.5 RC 的 Microsoft 软件许可条款,您不能将 .NET Framework 4.5 RC 二进制文件与您的应用程序一起再分发。

解决此问题的方法:

您的客户可以从 .NET Framework 下载中心下载操作系统支持的 .NET Framework 4.5 RC。.NET Framework 4.5 RC 是随 Windows 8 Release Preview 和 Windows Server 2012 提供的,因此不必在这些操作系统上单独安装。

1.3.1.3 Windows 运行时 IRandomAccessStream 接口会在读过文件结尾时报告无效位置

将 Windows 随机访问流 (IRandomAccessStream) 转换为托管流时,托管流将默认使用一个缓冲区。当文件中的最后一个字节填充到缓冲区中时,该缓冲区会读过文件结尾并报告位置不正确。此问题影响使用该位置的所有代码;例如,当您使用 System.IO.Compression.ZipArchive 类从 Windows 运行时流读取数据时,就会出现这种情况。

 

问题发生位置示例:

       

   Windows.Storage.Pickers.FileOpenPicker fop = new Windows.Storage.Pickers.FileOpenPicker();

   fop.FileTypeFilter.Add(".zip");

  

   StorageFile file = await fop.PickSingleFileAsync();

   using (System.IO.Stream s = await file.OpenStreamForReadAsync())

   {

      using (var za = new System.IO.Compression.ZipArchive(s))

      {

         foreach (var entry in za.Entries) // Fails here....

         {

            // Do something here

         }

      }

   }

解决此问题的方法:

使用长度为零的缓冲区打开流。调用 file.OpenReadAsync() 而非 file.OpenStreamForReadAsync() 方法,然后对生成的 Windows 运行时流调用 AsStreamForRead(0)。

 

例如:

   using (var ws = await file.OpenReadAsync())

   {

      using (var s = ws.AsStreamForRead(0))

      {

         using (var za = new System.IO.Compression.ZipArchive(s)) // This will now work correctly.

         {

            // Do something here

         }

      }

   }

1.3.2 ASP.NET

没有已知问题。

1.3.3 Winforms

没有已知问题。

1.3.4 并行编程

1.3.4.1 TPL 数据流已从 .NET Framework 4.5 RC 再发行版本中删除

任务并行库 (TPL) 数据流 (System.Threading.Tasks.Dataflow.dll) 已从 .NET Framework 4.5 RC 再发行版本中删除,转而使用带外传送机制。

解决此问题的方法:

若要安装 System.Threading.Tasks.Dataflow.dll,请在 Visual Studio 2012 RC 中打开您的项目,再从“项目”菜单中选择“管理 NuGet 包”,然后联机搜索 Microsoft.Tpl.Dataflow 包。

 

 

1.3.5 Managed Extensibility Framework

1.3.5.1 适用于 Windows Metro 风格应用程序的 MEF 已从 .NET Framework 4.5 RC 再发行版本中删除

适用于 Windows Metro 风格应用程序 (System.ComponentModel.Composition.*.dll) 的 Managed Extensibility Framework (MEF) 已从 .NET Framework 4.5 RC 再发行版本中删除,转而使用带外传送机制。

解决此问题的方法:

若要安装 System.ComponentModel.Composition.*.dll,请在 Visual Studio 2012 RC 中打开您的项目,再从“项目”菜单中选择“管理 NuGet 包”,然后联机搜索 Microsoft.Composition 包。

 

 

1.3.6 Entity Framework

没有已知问题。

1.3.7 LINQ to SQL

没有已知问题。

1.3.8 Windows Communication Foundation (WCF)

1.3.8.1 默认 HTTPS 协议映射导致问题

如果已在 IIS 中承载了 Windows Communication Foundation (WCF) 版本 4 服务并启用了 HTTP 和 HTTPS 绑定,则在遇到下述情形时,WCF 4.5 中新的默认 HTTPS 终结点功能可能会导致问题:

  • 您有一项双工协定并在 web.config 文件中通过以下协议映射配置了绑定:

<protocolMapping><add scheme="http" binding="wsDualHttpBinding"/></protocolMapping>

升级到 WCF 4.5 时,您可能会看到以下错误:

 

协定需要使用会话,但“BasicHttpsBinding”绑定不支持该会话,或者未进行适当的配置以支持该会话。

说明:在执行当前 Web 请求的过程中发生未经处理的异常。有关错误和代码中发出该错误的位置的更多信息,请查看堆栈跟踪。

 

此错误之所以发生,是因为针对 WCF 服务(使用新的 BasicHttpsBinding 绑定)公开的默认 HTTPS 终结点不支持双工协定。

 

  • 您在使用 security mode=Transport/TransportWithMessageCredential 定义 HTTP 终结点的位置有一项服务。升级到 WCF 4.5 时,您可能会获得以下错误消息:

绑定实例已进行关联,可侦听 URI“https://domain/address/service.svc”。如果两个终结点要共享同一 ListenUri,则必须也共享同一绑定对象实例。已在 AddServiceEndpoint() 调用或 config 文件中,或同时在 AddServiceEndpoint() 调用和 config 文件中指定两个冲突的终结点。

  • 您在使用 ClientCredentialType 作为除“无”之外的类型(例如,Windows)定义 HTTP 终结点的位置有一项服务,您使用的是针对 HTTP 终结点的 protocolMapping,而且您的 IIS 虚拟目录已配置为“匿名”及其他相应的身份验证模式(例如,Windows)。升级到 WCF 4.5 时,您可能会得到另一个使用“匿名”身份验证方式的服务所公开的 HTTPS 终结点。

 

解决此问题的方法:

若要解决这些问题,请将 <remove scheme=”https” /> protocolMapping 添加到 web.config 文件中,或者在服务标记内显式定义一个 HTTP 服务终结点。

1.3.8.2 IIS 承载的 WCF 服务(使用启用了 HTTP GET 和非 HTTP 的终结点)所导致的错误

如果您的设置包括以下内容:

  • WCF 服务承载在 IIS 中。
  • 在 IIS 中禁用了“匿名”身份验证模式。 
  • WCF 服务使用非 HTTP 终结点。 
  • WCF 服务已将“启用 HTTP GET”设置为 true。

 

您可能会遇到以下错误:

异常:System.ServiceModel.ServiceActivationException:“/.../.../<serviceName>.svc”服务因为在编译过程中出现异常而无法激活。异常消息为:本服务的安全设置要求进行“匿名”身份验证,但尚未为承载该服务的 IIS 应用程序启用该验证。---> System.NotSupportedException:本服务的安全设置要求进行“匿名”身份验证,但尚未为承载该服务的 IIS 应用程序启用该验证。

解决此问题的方法:

若要解决该问题,可在 IIS 中启用匿名身份验证模式(至少对 myservice.svc-Uri 应该如此),或者使用 ClientCredentialType==Windows/InheritedFromHost 手动创建 HTTP GET 元数据终结点。

1.3.9 Windows Presentation Foundation (WPF)

没有已知问题。

1.3.10 Windows Workflow Foundation (WF)

1.3.10.1 工作流设计器中的某些新功能可能导致现有解决方案出现问题

在 .NET Framework 4.5 RC 中,工作流设计器包括以下更改:

  • 现在,在选择多个活动的情况下可以使用快捷菜单。
  • 在活动设计器中,可拖动的区域现在是设计器的标头而不是整个设计器。在 FlowDecision 和 FlowSwitch 设计器中,可拖动的区域仍然是整个设计器。
  • 在按下 Ctrl 键的情况下,多选的行为变化:在 .NET Framework 4 中,将在按下鼠标时取消选择。在 .NET Framework 4.5 RC 中,将在释放鼠标时取消选择。选择仍在按下鼠标时发生。
  • 活动设计器现在支持活动委托。有关更多信息,请参见“如何:在工作流设计器中定义和使用活动委托”。
  • 变量和参数设计器现在支持快捷菜单。快捷菜单包含用于删除变量和参数的项目以及用于批注的项目。有关更多信息,请参见“如何:在工作流设计器中为工作流添加注释”。
  • 以前,MetadataStore 类不支持在泛型类型定义的泛型属性上添加特性。但现在支持。
  • ModelItemDictionary 类现在支持 null 键。
  • 以前,ModelItem.Parents 属性包含不在模型树中的项。现在,ModelItem.Parents 中的所有对象都是模型树中的有效对象。
  • 以前,当在设计器中选择了针对 Switch 活动的 Case 时,键盘焦点将转向所选 Case 中的活动,且该活动将突出显示。现在,该活动将突出显示,但键盘焦点不会更改。
  • 以前,如果仅在表达式文本框中输入了一个字符,则设计器会将该值视为 Char 类型的常量。现在,表达式将被视为变量名或参数名。
  • 以前,类型浏览器会显示对未引用的程序集有依赖关系的引用的程序集中的类型。现在,对未引用的程序集有依赖关系的类型将不会显示,除非引用了这些依赖程序集。
  • 以下类型和成员现在已过时:
    • System.Activities.Presentation.Services.ModelChangedEventArgs 类中的大多数属性已过时。使用 ModelChangeInfo 属性而非过时的属性。
    • 在 System.Activities.Presentation.DragDropHelper 类中,以下方法已被新的多重选择功能代替:
      • DoDragMove(WorkflowViewElement, Point) - 改用 DoDragMove(IEnumerable<WorkflowViewElement>, Point)。
      • GetDroppedObject(DependencyObject, DragEventArgs, EditingContext) - 改用 GetDroppedObjects(DependencyObject, DragEventArgs, EditingContext)。
      • GetDraggedModelItem(DragEventArgs) - 改用 GetDraggedModelItems(DragEventArgs)。
      • GetCompositeView(DragEventArgs) - 改用 GetCompositeView(WorkflowViewElement)。
      • SetDragDropCompletedEffects(DragEventArgs, DragDropEffects) - 改用 SetDragDropMovedViewElements(DragEventArgs, IEnumerable<WorkflowViewElement>)。
      • GetDragDropCompletedEffects(DataObject) - 改用 GetDragDropMovedViewElements(DataObject)。

解决此问题的方法:

使用上面的列表中讨论的针对每个问题的解决方法。

1.3.10.2 将 Workflow Identity 参数与工作流一起使用时主机无法启动

.NET Framework 4.5 RC 包括一个新的工作流参数 Workflow Identity,该参数保存在 SQL 工作流实例存储中。如果使用包含此参数且参数值不为 null 的工作流,则必须更新实例存储,以便它能存储该值。否则,主机将无法启动。

解决此问题的方法:

通过在以下位置运行脚本来更新 SQL 工作流实例存储:

%windir%\Microsoft.NET\Framework\<version>\SQL\<language>\SqlWorkflowInstanceStoreSchemaUpgrade.sql

 

2..Net 维护

2.1 升级到 Windows 8 Release Preview 不会更新 .NET Framework 4 语言包

如果您从 Windows 7 操作系统升级到 Windows 8 Release Preview,则不会删除或更新您之前安装在计算机上的 .NET Framework 4 语言包。此问题会影响与升级后的 Windows 8 Release Preview 的语言(不包括英语)不匹配的语言包。例如,如果您具有英语版本的 Windows 7 旗舰版和 .NET Framework 4 德语语言包,并将您的系统升级到英语版本的 Windows 8 Release Preview,则该语言包将保留在您的系统上,但不会更新到 .NET Framework 4.5 RC。

 

解决此问题的方法:

在升级到 Windows 8 Release Preview 之前卸载 .NET Framework 4 语言包,或在升级后安装适当的 Windows 8 Release Preview 语言包。

你可能感兴趣的:(framework)