使用 .NET Framework 的跨平台开发

(相关参阅)可移植类库 –  http://msdn.microsoft.com/zh-cn/library/gg597391(v=vs.100).aspx

.NET Framework 4.5         

Visual Studio 2012 中的 可移植类库 项目支持 .NET Framework 应用的跨平台开发。

使用此项目编写和生成的可移植程序集,无须在多个平台的修改即可运行,例如 Windows 7,Windows 8,Silverlight ,Windows Phone 和 Xbox 360。             例如,可以创建在桌面应用程序、Windows 应用商店应用程序和移动应用程序中包含共享业务逻辑的类,然后从不同类型的应用程序中引用这些类。

可移植类库项目支持 .NET Framework、Silverlight、适用于 Windows 应用商店应用的 .NET、Windows Phone 和 Xbox 360 中的部分程序集,并提供可用于生成不在这些平台上进行修改也可运行的程序集的 Visual Studio 模板。             如果没有使用可移植类库项目,您必须先指定单个应用程序类型,然后手动修改其他应用程序类型的类库。  可移植类库 项目,可以通过生成在不同设备上的应用程序之间共享的可移植程序集来减少开发和测试代码的时间和费用。

                 说明
如果您使用的是 Visual Studio 2013,则可用的选项和菜单可能与本文中的描述有所不同。

以下各节对 可移植类库 的功能进行了介绍:

  • 先决条件
  • 目标平台
  • 支持的功能
  • 受支持的类型和成员
  • 平台抽象
  • 支持模型-视图-视图模型 (MVVM) 模式
  • 创建可移植类库项目。
  • 选择目标平台
  • 使用可移植类库
先决条件


如果将 Visual Studio 2012 的多平台版本用作开发环境,则您所需的用于开发可移植类库项目的几乎所有内容均可供您使用。               值得注意的是,可移植类库在某些 Visual Studio 单平台版本中不可用,例如 Visual Studio Express for Windows 8。  Windows Phone SDK 8.0 in addition to the version of Visual Studio 2012 that you already have installed.’>此外,如果要面向 Windows Phone 8 进行开发,除了您已经安装的 Visual Studio 2012 版本,还必须安装 Windows Phone SDK 8.0。Portable Library Tools, and save the download file (PortableLibraryTools.exe) on your computer.’>若要在未安装 Visual Studio 2012 的情况下在生成计算机上安装可移植类库工具,请下载 Portable Library Tools (可移植库工具),并将下载的文件 (PortableLibraryTools.exe) 保存到您的计算机上。               /buildmachine switch on the command line.’>从命令提示符窗口运行安装程序,并包括命令行上的 /buildmachine 开关。
目标平台


当您创建 可移植类库 项目时,可以选择要针对的两个或多个平台。               下表显示可用平台。

平台 版本
.NET Framework .NET Framework 4 和更高版本.NET Framework 4.0.3 和更高版本.NET Framework 4.5
Silverlight Silverlight 4 和更高版本(默认选中)。Silverlight 5
Windows Phone Windows Phone 7 和更高版本(默认选中)Windows Phone 7.5 和更高版本Windows Phone 8

                           重要事项
Windows Phone SDK 8.0 for the Windows Phone 8 option. ‘>如果选择 Windows Phone 8,则必须安装 Windows Phone SDK 8.0。
适用于 Windows 应用商店应用的 .NET (*) 不可用
Xbox 360 不可用

该表标识默认情况下处于选中状态的四个平台或版本。               Project Properties dialog box, as shown in the section Selecting the Platforms to Target.’>如 选择要面向的平台 所示,可以通过使用“项目属性”对话框来更改这些默认平台。

支持的功能


在指定目标平台时,在 可移植类库 项目中,仅在您的项目中自动引用这些平台支持的程序集。               您不必添加或移除程序集。  如果您更改目标平台,则自动更新引用的程序集。如果您只以 .NET Framework 4.5 和 适用于 Windows 应用商店应用的 .NET 为目标,那么您就有权访问比其他平台组合中更大的程序集。               此较大程序集的集合与 适用于 Windows 应用商店应用的 .NET 几乎是相同的,但是不包括 Windows.UI.Xaml 命名空间中的类。  .NET for Windows Store apps – supported APIs in the Windows Dev Center.’>有关详细信息,请参见 Windows 开发人员中心中的 .NET for Windows Store apps – supported APIs(用于 Windows 应用商店应用程序的 .NET–受支持的 API)。下表显示了可用平台和版本上支持的功能。

功能 .NET Framework Windows 应用商店 Silverlight Windows Phone Xbox 360
核心
LINQ
IQueryable 7.5 和更高版本
动态关键字 仅限 4.5
Managed Extensibility Framework (MEF)
网络类库 (NCL)
序列化
Windows Communication Foundation (WCF)
模型视图视图模型 (MVVM) 仅限 4.5
数据批注 仅 4.0.3 和 4.5
XLINQ 仅 4.0.3 和 4.5
System.Numerics
受支持的类型和成员


在 可移植类库 项目中可用的类型和成员受若干兼容性因素约束:

  • 它们必须在所选的目标平台之间共享。
  • 必须行为与平台上的这些行为类似。
  • 它们不得是要弃用的候选项。
  • 它们必须在可移植环境中才有意义,特别是在支持成员时是不可移植时。

例如,可移植类库项目不包含任何 UI 相关类型或成员,原因是不同设备的 UI 的行为不同。               如果您的目标是在 可移植类库 引入之前发布的平台(如 Xbox、.NET Framework 4 和Windows Phone 7),那么您可能会遇到限制。

.NET Framework Class Library.’>可查找 可移植类库 支持的成员,在 .NET Framework Class Library(.NET Framework 类库)的参考主题中查找。               在类的成员表中,受支持的成员旁边会显示以下可移植类库图标。

Chars property in the String class is supported in the Portable Class Library.’>例如,下面的图像显示,在 String 类中的 Chars 属性在 可移植类库 中支持。

Version Information section of a reference topic for a note indicating that a type or member is supported in the Portable Class Library project, as shown below.’>按如下显示,还可以查看参考主题的“版本信息”节,了解指示在可移植类库项目中受支持的类型或成员的注释。

平台抽象


通常,您需要从可移植类中调用不可移植的成员。               无法直接调用不可移植的成员,因为这些成员不适用于 可移植类库 项目。  相反,您可以在 可移植类库 项目中创建一个抽象类并可以从所有可移植代码中使用该类。  在特定于平台的项目中,创建抽象类的子类并实现特定于平台的行为。以下示例显示与本地设置一起使用的可移植类。               在 Windows 应用商店 应用程序和 Silverlight 应用程序中处理本地设置的方式各不相同,因此可移植类不提供任何实现详细信息。

C#
using System;

namespace ExamplePortableLibrary
{
    public abstract class ExampleLocalSettings
    {
        public abstract void SetLocalValue(string name, object value);

        public static ExampleLocalSettings Instance { get; set; }
    }
}

在 可移植类库 项目中,可以按以下方式使用。

C#
ExampleLocalSettings.Instance.SetLocalValue("ExampleSetting", "New value to add");

在您的 Silverlight 项目中,添加引用到可移植的程序集,然后创建实现特定于 Silverlight 环境的本地设置操作的子类。  ExampleLocalSettings class.’>下面的示例演示 ExampleLocalSettings 类的 Silverlight 实现。

C#
using System;
using System.IO.IsolatedStorage;
using ExamplePortableLibrary;

namespace SilverlightApplication1
{
    class SilverlightImplementation : ExampleLocalSettings
    {
        public override void SetLocalValue(string name, object value)
        {
            IsolatedStorageSettings.ApplicationSettings.Add(name, value);
        }
    }
}

在您的 Windows 应用商店 应用程序中,添加引用到可移植的程序集,然后创建实现特定于 Windows 应用商店 应用程序的本地设置操作的子类。  ExampleLocalSettings class for a Windows Store app.’>下面的示例演示 Windows 应用商店 应用程序的 ExampleLocalSettings 类的实现。

C#
using System;
using Windows.Storage;
using ExamplePortableLibrary;

namespace App1
{
    class AppImplementation : ExampleLocalSettings
    {
        public override void SetLocalValue(string name, object value)
        {
            ApplicationData.Current.LocalSettings.Values[name] = value;
        }
    }
}

Instance property.’>在 Silverlight 应用程序和 Windows 应用商店 应用程序两个中,必须初始化子类的特定实现并将其设置为 Instance 属性。  通常,您在该应用程序开始时创建此示例。  以下示例显示如何初始化 Silverlight 实现。

C#
ExampleLocalSettings.Instance = new SilverlightImplementation();

以下示例显示如何为 Windows 应用商店 应用程序初始化实现。

C#
ExampleLocalSettings.Instance = new AppImplementation();
支持模型-视图-视图模型 (MVVM) 模式


如果您的目标是 .NET Framework 4.5、适用于 Windows 应用商店应用的 .NET、Silverlight 和 Windows Phone,则可以在解决方案中实现视图 MVVM 模式。               实现此模式的类包括以下:

  • System.Collections.ObjectModel.ObservableCollection<T>
  • System.Collections.ObjectModel.ReadOnlyObservableCollection<T>
  • System.Collections.Specialized.INotifyCollectionChanged
  • System.Collections.Specialized.NotifyCollectionChangedAction
  • System.Collections.Specialized.NotifyCollectionChangedEventArgs
  • System.Collections.Specialized.NotifyCollectionChangedEventHandler
  • System.ComponentModel.DataErrorsChangedEventArgs
  • System.ComponentModel.INotifyDataErrorInfo
  • System.ComponentModel.INotifyPropertyChanged
  • System.Windows.Input.ICommand

Using Portable Class Library with Model-View-View Model.’>有关如何在 可移植类库 项目中实现 MVVM 模式的更多信息,请参见 将可移植类库与模型-视图-视图模型配合使用。

创建可移植类库项目


Portable Class Library template under Visual C# or Visual Basic.’>若要创建 可移植类库 项目,需要在 Visual Studio 2012 中创建一个新项目,然后在 Visual C# 或 Visual Basic 下选择“可移植类库”模板。
选择目标平台


默认情况下,可移植类库项目面向以下平台:

  • .NET Framework 4.5
  • Silverlight 4 及更新版本
  • Windows Phone 7 及更高版本
  • 适用于 Windows 应用商店应用的 .NET

该项目只引用受这些平台支持的程序集。               Solution Explorer, open the shortcut menu for the Portable Class Library project, and then choose Properties.’>若要更改目标平台,则在“解决方案资源管理器”中,打开 可移植类库 项目的快捷菜单,然后选择“属性”。

Library tab specifies the platforms that are currently targeted.’>在项目属性页上,“库”选项卡指定当前面向的平台。

Change button, and then select the appropriate check boxes.’>若要添加或移除目标平台,请选择“更改” 按钮,然后选择相应的复选框。

更改目标平台时,该项目中可用的程序集会发生更改以匹配您所选平台支持的程序集。               如果您的项目引用的程序集不受某个所选平台支持,必须移除对相应程序集的引用或更改目标平台。

使用可移植类库


在您生成 可移植类库 项目后,只是从其他项目引用该项目。               可以引用该项目或包含您要访问的类的特定程序集。若要运行引用 可移植类库 程序集的应用程序,必须在计算机上安装所需版本(或更高版本)的目标平台。               Visual Studio 2012 包含所有必需的架构,因此您可以运行该应用程序,而无需在用于开发应用程序的计算机上进行进一步修改。

部署 .NET Framework 应用程序

部署引用 可移植类库 程序集的 .NET Framework 应用程序时,必须在正确版本的 .NET Framework 上指定一个依赖项。                 通过指定此依赖项,可确保与您的应用程序一起安装所需的版本。  update, Update 4.0.3 for the .NET Framework 4, or the .NET Framework 4.5 installed.’>如果面向的是 .NET Framework 4 或更高版本,则必须已安装含 update(更新)的 .NET Framework 4、.NET Framework 4 的更新 4.0.3 或 .NET Framework 4.5。

  • Solution Explorer, choose the project node for the project you want to publish. (This is the project that references the Portable Class Library project.) On the menu bar, choose Project, Properties, and then choose the Publish tab.’>若要使用 ClickOnce 部署创建依赖项,请在“解决方案资源管理器”中,选择您要发布的项目对应的项目节点。(这是引用可移植类库项目的项目。)在菜单栏上,依次选择“项目”、“属性”,然后选择“发布”选项卡。                     Publish page, choose Prerequisites.’>在“发布”页上,选择“系统必备”。  选择所需 .NET framework 版本(或 .NET framework 4 更新)作为系统必备组件。
  • Solution Explorer, choose the setup project.’>若要创建安装项目的依赖项,请在“解决方案资源管理器”中,选择此安装项目。                     Project, Properties, Prerequisites.’>在菜单栏上,依次选择“项目”、“属性”、“系统必备组件”。  选择所需 .NET Framework 版本作为系统必备组件。

.NET Framework Deployment Guide for Developers.’>有关部署 .NET Framework 应用程序的更多信息,请参见 .NET Framework 部署指南(针对开发人员)。

部署基于 Silverlight 的应用程序

部署引用 可移植类库 程序集的基于 Silverlight 的应用程序时,您必须确保该应用程序所需的最低运行时版本匹配其目标版本。                 如果面向的是 Silverlight 4,则版本必须是 4.0.60129.0 或更高版本。  &lt;param name=”minRuntimeVersion” value=”4.0.60129.0″ /&gt; in the webpage that hosts the Silverlight-based app, as follows:’>通过在承载基于 Silverlight 的应用程序的网页中包括,可设置 <param name=”minRuntimeVersion” value=”4.0.60129.0″ /> 参数值。

XAML
<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," 
           type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="ClientBin/SilverlightApplication.xap"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="4.0.60129.0" />
    <param name="autoUpgrade" value="true" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" 
             style="text-decoration:none">
      <img src=http://go.microsoft.com/fwlink/?LinkId=161376
             alt="Get Microsoft Silverlight" style="border-style:none"/>
    </a>
  </object>
   <iframe id="_sl_historyFrame" 
              style="visibility:hidden;height:0px;width:0px;border:0px">
   </iframe>
</div>

可移植类库中的 API 差异

为了使可移植类库程序集在所有支持的平台中兼容,稍微更改了可移植类库中的部分成员。                 API Differences in Portable Class Library.’>有关对哪些成员进行了更改以及进行了怎样的更改的详细信息,请参见可移植类库中的 API 差异。

原文连接: http://msdn.microsoft.com/zh-cn/library/gg597391(v=vs.110).aspx#feedback

.Net Framework 中相关技术简介

Windows Workflow Foundation(WF):工作流引擎,基于工作流的开发使程序的业务逻辑与代码相分离,从而可以大大提高软件开发的效率。

Windows Communication Foundation(WCF): 用于实现应用程序间(包含不同语言开发的程序)通信的技术,WCF构建在SOAP协议之上。

Windows Presentation Foundation(WPF): 集成WebForm与WinForm于一体的界面开发方案

WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。
作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你刚到神奇。顺便提一下,Aero是专门为3D桌面开发的引擎,可以让桌面实现神奇的3D翻转,这绝对是操作系统有史以来的一次神奇尝试,虽然对硬件配置的要求也是惊人的,此前已有相关报道称,Vista对显卡十分挑剔就是出于运行Aero的考虑。

P.S. : WPF就是所谓下一代Windows界面层技术,就算是winform的下一代吧。

Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK)。WCF为服务提供了运行时环境(Runtime Environment),使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。理论上讲,创建服务并不一定需要WCF,但实际上,使用WCF却可以使得创建服务的任务事半功倍。WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及各种协议的管理。

P.S. : 它整合了.Net平台下所有的和分布式系统有关的技术,例如ASP.NET Web服务(ASMX)、增强Web服务扩展(WSE)、.Net Remoting、企业服务(Enterprise Service)和微软消息队列(MSMQ)。你就先把它想成Web Service的下一代也没什么问题。

LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。

继续阅读“.Net Framework 中相关技术简介”

难道没有Windows7用的PowerShell嘛?

2011年2月12日作者:enet查看原文

以前的系统是2003, 最近换成了win7. 记得以前有微软个叫 PowerShell的东西, 在CMD下支持WMI, 可以通过编写脚本,函数,模块来很好的操作管理系统.

今天特意去下载, 页面上提示 系统提示注意:

本篇文章的内容适用于其他版本的 Windows (不包括您正在使用的版本) 。本篇文章的内容可能不适用您的电脑。

浏览 Windows 7 帮助和支持中心http://support.microsoft.com/kb/968929

难道没有Windows7用的PowerShell嘛?

然后在 http://code.msdn.microsoft.com/PowerShellPack 看到:

 (if you are running Windows 7 or Windows Server 2008 R2, you are running PowerShell V2)

这么说应该是Windows7已经内置包含了PowerShell, 而且是 v2的.

再看, 原来PowerShell 2.0是包含在 Framework 2.0中的, Windows7自带它:

Windows PowerShell 2.0 appears as an option in a Windows Update scan only if the computer meets the following conditions.

接着我们在CMD下直接输入”powershell” , 回车

很明显已经执行进入了PS shell.

更多的PowerShell的信息

Windows PowerShell 有哪些新增功能?

Windows 7 中 Windows PowerShell 的新增功…

Windows PowerShell 的新增功能

更新时间: 2009年1月

应用到: Windows 7

Windows® 7 中包含 Windows PowerShell 2.0。 它还包含可以添加到 Windows PowerShell 的其他 cmdlet、提供程序和工具,以便您可以使用和管理其他 Windows 技术,如 Active Directory(R) 域服务、Windows® BitLocker™ 驱动器加密、DHCP 服务器服务、组策略、远程桌面服务和 Windows Server Backup。

http://technet.microsoft.com/zh-cn/library/dd367858(WS.10).aspx

推荐下载使用PowerGUI, Windows下很好用的一个PS IDE工具.

http://www.powergui.org
My PowerShell community is PowerGUI.org

http://www.powergui.org/downloads.jspa