使用Biztalk Server进行开发时,有时可能需要调用已经写好程序集里的函数。对于这种情况,需要将调用的程序集安装到全局程序缓存(Global Assembly Cache)中。否则,在Biztalk Server的日志中可能会看到如下的错误日志:
事件类型: 错误
事件来源: XLANG/s
事件种类: 无
事件 ID: 10034
日期: 2006-8-25
事件: 13:01:18
用户: N/A
计算机: UITV-FANG
描述:
未捕获的异常终止了服务 CallFunction.MainOrch(f87583a7-9607-1e6b-7d79-2546662c7f19),实例 156a7c0e-2cea-4a56-b53b-213af7d7203d Could not load file or assembly 'MyFunction, Version=1.0.2428.22802, Culture=neutral, PublicKeyToken=3027498b2c98444d' or one of its dependencies. 系统找不到指定的文件。
异常类型: FileNotFoundException
源: CallFunction
目标站点: Microsoft.XLANGs.Core.StopConditions segment1(Microsoft.XLANGs.Core.StopConditions)
帮助链接:
其他错误信息:有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
要将程序集安装到GAC中,首先要为程序集赋一个强名(strong name),其实是用于签名的密钥。
1.选择“开始/所有程序/Microsoft Visual Studio .NET 2003/Visual Studio .NET 工具/Visual Studio .NET 2003 命令提示”菜单,进入.net 2003命令提示窗口。
2.在命令提示中输入:sn -k c:/yoursnfile.snk。
3.打开要安装的项目AssemblyInfo.cs文件,找到[assembly: AssemblyKeyFile("")]代码,为其加入密钥文件:
[assembly: AssemblyKeyFile(@"C:/yoursnfile.snk")]
4.重新编译项目。
5.重新回到.net 2003命令提示窗口,输入如下命令:
gacutil -I "c:/changetoyourpath/test.dll"
其中双引号的内容都实际的程序集文件名代替。