当4.5或4.6 app使用时,同一个程序集的行为有何不同?

时间:2015-05-05 12:54:38

标签: .net .net-4.0 .net-4.5 .net-4.6

What's New in 4.6

中的引文
  

对于面向.NET Framework 4.6 RC的应用,TaskTask<TResult>   对象继承了调用线程的文化和UI文化。该   针对以前版本的.NET Framework的应用程序的行为,   或者不针对特定版本的.NET Framework,是   不受影响。

我一直认为在4.0,4.0.1,4.0.2,4.0.3,4.5,4.5.1,4.5.2和4.6的汇编级别只存在v4.0.30319 - 那只是4.6 4.0-4.5.2的内部更新?

对于我的current knowledge app.config文件中的指定版本,如果根本没有安装SKU,则只触发一个消息框 - 这会如何影响程序集的行为?

1 个答案:

答案 0 :(得分:1)

此页面说明了一切,

https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx

  

基于文化和任务的异步操作

     

基于任务的异步编程模式使用Task和   任务对象以异步方式在线程上执行委托   池线程。特定任务运行的特定线程是   事先不知道,但仅在运行时确定。

     

对于针对.NET Framework 4.6 RC或更高版本的应用程序,   文化是异步操作环境的一部分。其他   单词,从应用程序开始,目标是.NET Framework 4.6 RC,   默认情况下,异步操作继承了的值   CurrentCulture和CurrentUICulture属性的线程来自   他们发布了。如果是当前的文化或当前的UI文化   与系统文化不同,当前的文化跨越线索   边界并成为线程池线程的当前文化   正在执行异步操作。

     

以下示例提供了一个简单的说明。 它使用了   TargetFrameworkAttribute属性,用于定位.NET Framework 4.6   RC。该示例定义了一个Func委托,formatDelegate,   返回一些格式化为货币值的数字。这个例子   将当前的系统文化更改为法语(法国)或if   法语(法国)已经是当前的文化,英语(美国)   状态)。然后:

     
      
  • 直接调用委托,以便它在主应用程序线程上同步运行。
  •   
  • 创建在线程池线程上异步执行委托的任务。
  •   
  • 通过调用Task.RunSynchronously方法创建在主应用程序线程上同步执行委托的任务。
  •   

您可以从代码示例中看到如何将您的程序明确标记为.NET 4.6目标。然后CLR使用新行为。对于没有此类属性的所有程序集,或者该值不是4.6,将保留旧行为。