原文作者:MSDN

原文地址: http://www.hanselman.com/blog/SmallestDotNetUpdateNowWithNET4SupportAndAnIncludableJavaScriptAPI.aspx

翻译发布: http://www.clubof.net/Translation/Article.aspx?ArticleId=1151

翻译内容:


几年前我发表了一篇关于.NET Framework大小的文章(www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx)。在过去,.Net Framework网站上有很多容易引起混淆的地方。如果你搜索关键字".NET Framework"或者".NET Framework Redistributable",通常你会得到一个可以下载的连接,下载文件大小是200MB左右。而下载的文件是一个完整的离线安装包,当需要安装.NET Framework时,程序员可以直接分发安装到任何类型的电脑上而不需要网络连接。

.NET 3.5的Client Profile 安装文件大概是28MB,而实则上.NET 4的Client Profile看起来更小。为了帮助大家避免这些混淆,我建立了SmallestDotNet.com 这个网站。它会探测你的浏览器的UserAgent,根据UserAgent告诉你已经安装了哪个版本的.NET,如果想要安装.NET 3.5需要多大的下载量,以及哪一种可再发行的.NET版本适合你以达到最小的下载量。

现在.NET 4很快就要发不了,在 Tatham Oddie's (他这周呆在家里)的帮助下,我花了一个小时的时间更新了网站以便支持新版本的.NET。我们同时对一些bug进行了修复(我保证只有很小的几个bug),并且提供了一个Javascript的API以帮助大家检测客户端的.NET Framework的版本。

你可以通过三种方式使用网站。

第一种方式, 直接访问网站。

如果你有一台电脑需要安装.NET或者你不确定安装了哪个版本的.NET,直接访问SmallestDotNet.com 我会尽全力告诉你。 它在IE下使用最好,不过在Firefox下亦能使用如果安装了相应的.NET插件。如果你的浏览器是Safari或者Chrome,很抱歉我不能帮助到你,因为无法从这些浏览器上获取关于.NET的任何信息。

第二种方式,直接包含可输出HTML代码的Javascript代码。

如果你想以最便捷的告诉用户安装的.NET的版本,并且你想在你的网站上实现这个功能,比如通过你的博客,你直接包含下面这行代码到页面中即可:
view source

1.<script type="text/javascript" src="http://www.smallestdotnet.com/smallestdotnet/javascript.ashx">script>

然后我会以类似下面的方式返回:

1.document.write('')
2.document.write('Detected 3.5 SP1 .NET Framework. No update needed.')
3.document.write(')'

然后你可以根据返回结果自己设计来尝试使用。

第三种方式,包含可以输出JSON格式的Javascript代码。

HTML 直接输出速度比较快,但是当你想要进行更多的输出控制时就不是很方便,比如你想自己控制um或者显示的文本。如果这样,你可以包含下面的代码:

然后我会返回一个JSON格式的对象如下面所示:

01.SmallestDotNet = {};
02.SmallestDotNet.latestVersion = {
03.                major: 4,
04.                minor: 0,
05.                profile: "client",
06.                servicePack: null               
07.        };
08.SmallestDotNet.allVersions = [
09.  {
10.                major: 4,
11.                minor: 0,
12.                profile: "client",
13.                servicePack: null               
14.  },
15.  {
16.                major: 3,
17.                minor: 5,
18.                profile: "full",
19.                servicePack: 1               
20.  },
21.  {
22.                major: 2,
23.                minor: 0,
24.                profile: "full",
25.                servicePack: null               
26.  }
27.];

在合适的情况下,我们会输出相应电脑上最新版本的.NET Framework,以及它的SP和Profile(客户端的Profile,完整版等等)。它同时会返回一个在电脑上找到的已安装的所有版本的.Net Framework的数组。比如在我电脑上测试,它告诉我的电脑已经安装.NET 4 Client Profile,.NET 3.5 SP1以及.NET 2.0。

更新提示: 我已经更新了JSON格式的输出,在返回对象中包含了另一个数组,这个数组包含了所有.NET Framework版本以及下载地址的完整列表,格式如下:

view source
print?01.SmallestDotNet.downloadableVersions =
02.[{
03.        major: 4,
04.        minor: 0,
05.        profile: 'client',
06.        servicePack: null,
07.        url: 'http://www.microsoft.com/...'                                       
08.},
09....SNIP...
10.{
11.        major: 2,
12.        minor: 0,
13.        profile: 'full',
14.        servicePack: 2,
15.        url: 'http://www.microsoft.com/...'                                       
16.},{
17.        major: 1,
18.        minor: 1,
19.        profile: 'full',
20.        servicePack: 1,
21.        url: 'http://www.microsoft.com/...'                                       
22.}];

我现在并没有添加细节信息,比如.NET 2,0 SP2等等,如果你需要更多的功能,请告诉我我可以添加。它已经运行两年了,如果它对你有帮助,请告诉我。如果它有一些不足的地方,也请告诉我。

关于JSON对象,你可以询问各种类型的问题。. 这里有一个可以在此JSON对象上运行的 JavaScript alert() 例子。当然,在使用的时候,你应该检查这些对象是否为空以及检查所有版本数组的长度是否合法。

1.alert( SmallestDotNet.latestVersion.major );
2.alert( SmallestDotNet.allVersions.length );
3.alert( SmallestDotNet.allVersions[0].minor );
4.alert( SmallestDotNet.allVersions[1].major );");

如果能添加一些jQuery代码去告诉终端用户一些关于你的程序需要哪个版本运行以及他们需要先安装哪个版本的友好的提示就会达到更好的效果。在你的程序的问题解决中,它也会带来很大的帮助。

希望它能够给你带来帮助。希望你能够喜欢。

About author
Disclaimer
The opinions and comments expressed herein are my own personal opinions and do not represent my employer's view in any way.
Comments
No comments.
Add comment
Title
Title is required.
Name
Name is required.
Email
Please input your personal email with valid format.
Comments
Please input comment content.
Captcha Refresh
Input captcha:

Subscription

Statistics

Locations of visitors to this page