我有一个 SSIS 包,其中包含需要第 3 方程序集的脚本任务。由于不允许将此程序集放在 SSIS 服务器上的 GAC 中,因此我在运行时将程序集绑定到脚本任务的静态构造函数中。这篇文章是我用作指导的。但是我想找到一种方法来避免硬编码程序集文件的路径。
我的工作代码如下所示:
static ScriptMain()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.Contains("thirdparty"))
{
string path = @"C:\mydrive\Solution\Reference";
return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "thirdparty.dll"));
}
return null;
}
我试过的:
1)将路径设置为包变量。这不起作用,因为静态构造函数运行时 Dts 对象尚未实例化,因此无法访问包变量。
2)尝试访问触发程序集解析事件的应用程序域,如下所示:
string appDomainPath = ((AppDomain)sender).BaseDirectory;
但这只是获取 VSTA 代码所在的目录。
我没主意了。这甚至可能吗?