使用 .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

Windows环境变量编辑器 | Windows Environment Variables Editor

注意:Windows10 以后,系统已经自带环境变量的编辑器!推荐使用系统的!

一个实用,简单,便捷的Windows环境变量编辑器(Windows Environment Variables Editor)。可以方便的编辑windows系统环境变量。

比那个老外写的 Rapid Environment Editor 方便的多,老外那个搞的有些太复杂了。。。  同样是C#写的。

20131025031134

可选择“系统变量” 或 “用户变量”, 忽略了用处不多的”进程变量”。

全部变量可以通过下拉框筛选。

20131025031219

环境变量列表:

列表变量条目上右键,会弹出菜单。20131025031338

新建变量:

20131025031412

新建系统变量时, 会检查时候已经存在。 如果存在考虑提示是否需改已存在的系统变量值。

20131025032910

编辑变量:20131025031442

有选项(默认)可以切分多个变量值为多行, 方便读改内容。编辑后确认, 会自动整合为无换行的一条变量值。

20131025031458

删除系统变量:

20131025032746

确认窗口, 以免误删。

20131025031533

个人作品, 欢迎建议。

参考:windows 环境变量 http://bohu.net/blog/177

下载地址: http://bohu.net/d/WindowsEnvironmentVariables.exe

域名注册信息查询工具 Net Info Tools

发布我自用的一个域名注册信息查询工具。 功能主要集中在域名WHOIS方面。

A Tools for Domain/IP Whois, HTTP Scan, Route trace, root servers Monitoring, QQWry IPLocate. :)p
一个多功能的域名工具. 可以whois域名/IP, 扫描http头信息, 路由追踪, 服务器状态, 调用QQWry查询ip归属. (最新版本 几乎支持所有域名后缀的可注册状态查询, 需要服务端接口支持, 暂不公开发布

下载:(可下载使用的版本

域名 和 IP地址的 WHOIS信息查询

1

WHOIS域名,查询域名相关注册信息,还可转至映射(Referral)的域名管理商WHOIS服务器查询更详细的注册信息。

IP WHOIS 查询IP地址所在的NIC归属,以及AS地址编码等相关分配所有信息。

2

HTTP Scan

扫描获取相关IP地址的WEB服务器HTTP 头信息, 可查询一个C类地址段。

22

IP Info

目前有3个功能, 简单路由追踪,Root跟服务器状态监视,ipv4地址分配表。

33

QQWty

如同其名,调用 纯真网络?的QQWty.dat 查询IP归属地。QQWty可以从 “纯真网络?->?金狐软件 获取。

44

Tools

域名注册及查询相关工具。 包括WHOIS服务器验证,以及域名列表生产器,可以根据各种域名后缀TDL, 进行组合成。

55

.CN Delete

到期删除的.CN域名和中文域名列表,可以查询最近3天的域名删除列表。 支持按后缀类型,长度进行筛选过滤。

66

Bulk

域名注册可用状态的批量查询。 支持从文件选择打开。

可配合上面Tools中的域名组合生成器,方便进行批量可用域名的检测,也可对所需域名进行全后缀的检测,适合玩米的人士。目前几乎支持世界上全部域名后缀的查询。 (P.S. 此功能需要服务器接口支持。由于目前性能及缺少可用服务器,暂不对外开放使用。)

77

TLDs Server

根据 IANA?所使用的 ISO 3166-1 自动检测查询各个 通用顶级域名(gTLD)和 国家顶级域名(ccTLD)? 的WHOIS服务器和注册地址,方便玩米的朋友注册,了解各域名的注册机开放信息。

88

关于

下图显示的是目前开发的最新版本,非可下载使用版本。 (?下载:可下载使用的版本

0

个人使用工具,难免问题众多。有建议和问题欢迎回复及谈论。

在考虑后续增加的一些功能:域名价格列表,在线注册,抢注和会员账号等。。。