将程序集添加到GAC

时间:2021-11-03 03:07:06
(点击查看大图)图2-6  在命令提示符下使用SN实用程序

在通过类库项目的属性用强名签署程序集时,必须指定强名文件。这可以通过从工具栏中选择Project | Properties命令完成。在出现属性窗口时,选择Signing选项卡,选中Sign the assembly复选框,如图2-7所示。使用下拉菜单,选择Browse找到已创建的密钥文件来创建一个强名密钥文件。如果还没有使用SN实用程序创建密钥文件,可以从下拉菜单中选择New(而非Browse)进行创建。

将程序集添加到GAC 
(点击查看大图)图2-7  使用属性窗口中Signing选项卡

正如图2-8所示,Visual Studio 2005使得创建新密钥变得更容易,还提供了口令保护选项。

将程序集添加到GAC 
(点击查看大图)图2-8  使用Visual Studio 2005创建强名密钥

在属性窗口中,选择Compile选项卡,设置configuration为Active (Release)。这就删除了任何调试信息,为生产优化了程序集。没有设置为Release,就不能将代码送至生产,或是代码将运行得特别缓慢。现在可以从工具栏中选择Build | Build Solution来构建项目。注意要构建输出路径,因为在将程序集添加到GAC中时需要用到它。

将程序集添加到GAC的最简单的方法是将程序集复制到C:\WINDOWS\assembly。不过,C:\Program Files\ Microsoft.NET\SDK\v2.0\Bin中的Global Assembly Cache Tool (Gacutil.exe)也可以使用。也可以通过Start | All Programs | Microsoft Visual Studio 2005 | Visual Studio Tools | Visual Studio 2005 Command Prompt访问该工具的路径。记住,如果使用的.NET版本不同,路径会有所不同。在命令提示符中,输入gacutil.exe /i "<程序集路径>"来启动该实用程序,如图2-9所示。

将程序集添加到GAC 
(点击查看大图)图2-9  通过命令提示符启动gacutil.exe

程序集也必须放在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727路径中(同样,最后的文件夹名会因安装的.NET版本不同而不同)。Visual Studio for Applications将从中寻找引用。如果Script Task在设计模式下,可以右击左侧Project Explorer窗格中的References。然后选择Add Reference来引用程序集。然后将出现可引用的程序集列表。选择程序集的名称并单击Add按钮,可以添加引用。添加的程序集将出现于Add Reference窗口中,如图2-10所示。单击OK按钮完成添加并关闭窗口。

将程序集添加到GAC 
(点击查看大图)图2-10  添加一个引用

在添加完引用后,下列代码会显示如何从Script Task调用自定义程序集。两个Script Task变量被通过对象的构造函数传递到自定义程序集SSIS.Utilities.HttpDownload。在使用下列代码之前,在Script Task的ReadOnlyVariables属性中设置这两个变量很重要。

Imports System
Imports System.Data
Imports System.Math
Imports System.Net
Imports System.IO
Imports System.Windows

 

Public Class ScriptMain

Public Sub Main()
Dim strUrl As String = CStr(Dts.Variables("varHttp").Value)
Dim strFile As String = CStr(Dts.Variables("varSaveFile").Value)
Using DownloadFile As SSIS.Utilities.HttpDownload = New
SSIS.Utilities.HttpDownload(strUrl, strFile)
DownloadFile.GetFile()
End Using
Dts.TaskResult = Dts.Results.Success
End Sub
End Class

在运行这个程序包之前,请确保将这两个变量的值设置为有用的内容,否则代码将不知道访问哪个URL和保存结果文件的位置。可以再次打开Variables窗口,通过手动为strUrl变量值和strSaveFile变量值输入有效的URL和有效的文件来设置变量。运行程序包,然后就会看到在指定的位置创建的文件。

任何时候使用自定义程序集时,都很有必要实现它们之前进行测试。测试程序集功能的简单方法是添加一个创建自定义对象的Windows项目到类库项目所属的相同的解决方案中(见图2-11)。添加Windows项目的方法是,右击类库项目的解决方案,单击Add | New Project,选择Windows Application。在Windows项目中,右击选择References | Add References | Projects,将自定义库项目添加为引用。所需要添加的是测试该自定义对象的按钮。注意,下列代码中Windows项目是用C#编写的。这是Visual Studio 2005中的一个新功能,使您可以添加不同代码类型的项目。可以添加下列代码来测试程序集。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using SSIS.Utilities;
using System.Configuration;

 

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

 

private void GetFromWebClient()
{
using (HttpDownload httpDL = new
HttpDownload("http://localhost/CSVDownload/Delimited.txt",
@"C:\Documents and Settings\Administrator\Desktop\YouDidit.txt"))
{
httpDL.GetFile();
}
}

 

private void button1_Click(object sender, EventArgs e)
{
try
{

 

GetFromWebClient();

}
catch(Exception ex1)
{
MessageBox.Show(ex1.Message);
}
}
}
}

GetFromWebClient()方法实例化自定义对象HttpDownload,接受一个URL和文件路径。然后在button1_Click事件中调用这一方法,这一事件在窗体中的按钮被单击时调用。您的按钮的名称可能有所不同,所以可适当改变这一事件的名称。现在已经有两个项目,Windows窗体项目必须设置为启动项目。设置的方法是右击Windows项目,选择Set as Startup Project。在解决方案运行后,如果没有问题,会弹出一个消息框表明没有错误发生。

如果代码正确运行,程序集就可以从Script Task中引用。

将程序集添加到GAC 
(点击查看大图)图2-11  将程序集作为Windows项目测试