.NET Framework 4.0 中如何把一个程序部署到全局应用缓存(GAC)

.NET Framework 4.0中,如何把一个程序部署到全局应用缓存(GAC)中发生了相当大的变化,VS2010 自带的 MSDN 都在一些地方描述是错误的。下面是我对如何部署 .NET Framework 4.0 GAC 整理的一些知识:

以前把一个程序部署到GAC,有下面四种方法,我们下面就以这四种方法为线索,说说 .NET Framework 4.0 中的问题。

使用Global Assembly Cache tool (Gacutil.exe)。

需要注意的是:这个工具在.NET Framework 运行时中并不包含。他是SDK的一部分。 在 .NET Framework 2.0 时,我们就要单独下载 .NET Framework 2.0 SDK ,或者装了 Visual Studio 后才会具有这个工具;

以我的电脑为例,我装的是win2008 R2, VS2010,我的这个工具默认就在

C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Bin/NETFX 4.0 Tools/x64/gacutil.exe  目录下。

这是安装 VS2010 后给我自带的。

这个文件不能 copy 到其他目录下用, 我试过把 gacutil.exe , gacutil.exe.config copy 到其他目录下,结果就不能用了。

而单独的.NET Framework 4.0 SDK目前还没有发布,我们在Windows  SDK 的blog 上可以看到,不久就会发布新版本。

所以,目前开发 .NET Framework 4.0 的程序, 如果你用到了 GAC, 这个GAC部署方法是不可用的,你不可再实际运营服务器上部署 VS2010 吧。 我们只有等 .NET Framework 4.0 SDK 。

使用 Microsoft Windows Installer 。

也就是我们把整个部署需要的组件打包到安装文件,然后安装即可。

如下图,VS2010 给我们提供了很多种常用的安装程序制作方法,只要一步步的完成即可。

image

但是,如果你是做 WEB 开发的, 你会很频繁的发布,每次发布,每次修改一个小bug,都要做一个安装程序包? 这几乎是一个非常愚蠢的做法。

 

使用 Assembly Cache Viewer (Shfusion.dll).

我 们在安装了 Windows Software Development Kit (SDK) 后(装 Visual Studio 会自动给你装 SDK),访问 C:/Windows/assembly 目录时,会自动使用Windows 的一个扩展 Assembly Cache Viewer (Shfusion.dll)。 这样我们就可看到下面的图,在这里我们可以很方便的拖动一个组件进入GAC,也可以直接删除一个组件:

image

但是,如果你仔细看的话,上面的GAC是没有 .NET Framework 4.0 的。这是因为,从4.0 开始,GAC的实际目录变成了: C:/WINDOWS/Microsoft.NET/assembly 目录了,而不是 C:/Windows/assembly 。上面的方式自然也就没法用了。

所以,目前开发 .NET Framework 4.0 的程序, 如果你用到了 GAC, 这个GAC部署方法是不可用的。

我所说的MSDN中错误的就是这里,MSDN中说 .NET 4.0 仍然可以这么用,其实是不可以的。

 

使用 Mscorcfg.msc (.NET Framework Configuration Tool)

这个工具,也就是我们之前常见的“Microsoft .NET Framework 2.0 Configuration”工具;如下图所示的:

image

但是需要注意的是:.NET Framework 4.0 以及之后的版本不再支持这种方式。我们只有在开发的之前版本的.NET程序,即 .NET 1.0,1.1, 2.0, 3.0, 3.5 的程序中才可以使用它。.NET 4开始不支持的原因参看这篇文章: Security Changes in the .NET Framework 4

当我们要在 .NET 2.0, 3.0, 3.5 的程序中使用时,我们应该使用:“Microsoft .NET Framework 2.0 Configuration”工具,这个工具仍然不再 .NET Framework 运行时中,而是在 .NET Framework 2.0 Software Development Kit (SDK) 中。

.NET 1.0, 1.1 , 对应版本的运行时仍然没有这个工具,而是在 NET Framework redistributable package 中。

所以,同样,目前开发 .NET Framework 4.0 的程序, 如果你用到了 GAC, 这个GAC部署方法是不可用的。

 

小结

目 前开发 .NET Framework 4.0 的程序, 如果你用到了 GAC,你会很痛苦,你只能做安装程序,这对频繁更新的 WEB 程序来说,这是不可接受的。 我们只有等到对应的 SDK 发布后,才可以把用到GAC的程序升级成 .Net Framework 4.0

 

 

参考资料:

How to: Install an Assembly into the Global Assembly Cache.
http://msdn.microsoft.com/en-us/library/dkkx7f79.aspx

Demystifying the .NET Global Assembly Cache
http://www.codeproject.com/KB/dotnet/demystifygac.aspx

Global Assembly Cache in .NET 4.0
http://www.umbraworks.net/bl0g/rebuildall/2010/02/10/Global_Assembly_Cache_in_NET_4_0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值