1

我以为这很简单,但我想不会。这是正在发生的事情。我创建了一个新包并向其中添加了一个脚本任务。我打开脚本任务并编辑脚本(C# 2010)。在解决方案资源管理器中,我右键单击项目名称 (ST_xxxxxx)。我选择“添加->现有项目”。在文件资源管理器中,我导航到我的文档文件夹并选择(不是双击)我的“test.cs”,它只是一个空类。在文件资源管理器窗口的右下角,在“添加”按钮旁边,单击向下箭头并选择“添加为链接”。为了测试,我选择“Build->Build ST_xxxxx”。构建成功。我保存,然后关闭脚本任务 VS 编辑器。然后我在脚本任务编辑器窗口上单击确定。 出现“脚本错误”窗口。“包中包含的脚本有编译错误”。 如果我保存它,任务上的错误会显示“找不到脚本的二进制代码”

任何想法如何解决这个问题?

我可以通过相同的过程并选择“添加”而不是“添加为链接”,它工作正常。但这会创建文件的副本,并且必须手动更新。我想链接到我所有使用的通用 cs 文件,而不必更新它们。

任何帮助,将不胜感激。

4

1 回答 1

1

找到了解决方案。只需将 dll 放入开发环境和生产服务器可访问的共享驱动器中即可。然后将此代码添加到 Main(入口点)函数之前(或之后)的脚本任务。然后添加相同的 dll 作为对项目的引用。奇迹般有效。

静态 ScriptMain() { AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); } 静态 System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { if (args.Name.Contains("ssisHelper")) { string path = @"c:\temp\"; 返回 System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "ssisHelper.dll")); } 返回空值;}

https://blogs.msdn.microsoft.com/dbrowne/2014/06/25/how-to-load-an-assembly-in-a-ssis-script-task-that-isnt-in-the-gac/

于 2017-05-17T22:13:51.890 回答