I use EPPlus.dll用于动态生成 Excel 文件以供附件并在 SSIS 包的脚本任务中生成邮件程序的库。
当邮件程序有新的更改需求时,我在本地计算机上的脚本任务中进行更改,并将构建的包文件( .dtsx )发送给 DBA 团队进行部署。
现在,每次我都必须要求 DBA 团队与我共享生产服务器屏幕,我可以:
- 在 Visual Studio Data Tools 解决方案中打开文件
- 浏览到 dll 位置
- 在脚本任务中添加对 dll 的引用。
然后,他们从计划作业引用的位置导入 MSDB 中的包文件并执行该包。
如果我不执行上述步骤,脚本任务将抛出未找到引用的错误。
错误 1 找不到类型或命名空间名称“OfficeOpenXml”
(您是否缺少 using 指令或程序集引用?)
我通过动态加载程序集克服了在脚本任务中引用的 GAC 内安装 DLL 的挑战,如下所示'
public void Main()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
private System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(strDLLPath, "EPPlus.dll"));
}
但我无法找到避免手动浏览和添加 DLL 引用的步骤。请提供帮助,因为 DBA 团队不愿意/避免共享屏幕。
或者,如果我无法直接访问生产服务器,那么在使用外部 dll 的服务器上部署包文件的正确/最佳实践方法是什么。