gpt4 book ai didi

com - 如何在 SSIS 包中使用 COM 引用?

转载 作者:行者123 更新时间:2023-12-01 02:30:43 24 4
gpt4 key购买 nike

我正在尝试使用 Microsoft Shell Controls And Automation来自 SSIS 脚本任务的 COM 对象库 (C:\Windows\System32\shell32.dll) 来操作 .zip 文件。

不幸的是,虽然我已经成功添加了相关的引用并且脚本任务编译正常。我正在使用 VB.NET,因为它物有所值。一旦我尝试创建库中定义的任何对象,我就会收到以下运行时错误:

Error: 0x1 at Archive File: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Interop.Shell32, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. File name: 'Interop.Shell32, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' at ST_a2650b7f39504eaa8c80e37a6736d957.vbproj.ScriptMain.Main()



我认为 Interop DLL 都会为我处理好 - 有谁知道我错过了哪一步?

最佳答案

SSIS 需要向 GAC 注册所有 .dll 引用,您是对的。
关于将此 dll 安装到 GAC 中,您有不同的选择:

  • 将 .dll 拖放到 %windir%\assembly\文件夹。
  • 使用 gacutil.exe 您正在考虑使用:关于使用 gacutil 安装到 GAC,这里有很多有用的信息:Global_Assembly_Cache .基本上,如果您安装了 .NET 框架(您使用的是 VB.NET,所以没有问题),您的 Microsoft.NET 文件夹中将有一个 gacutil.exe。
  • (当所有其他方法都失败时,我通常会使用它)在 Visual Studio 中创建一个 Windows MSI 项目,它会自动为您完成所有这些工作,有用的信息在这里:How to install assembly in the GAC using MSI

  • 如果您在 GAC 中安装该 .dll 并且您仍然遇到问题,另一种选择是实际创建一个单独的 Visual Studio 项目,该项目包含用于操作所需 zip 文件的逻辑,构建它并使用 从 SSIS 调用其 exe。执行流程任务 .您可以传递 SSIS 包中指定的参数。不是很优雅,但如果您热衷于使用 SSIS,它就可以完成工作。

    更新:
    这个问题的解决方案成功了 SSIS Script Task COMException / FileNotFoundException error .问题在于添加 dll 的签名引用,此答案为在 SSIS 脚本任务中添加 COM 引用提供了一个很好的分步解决方法。

    关于com - 如何在 SSIS 包中使用 COM 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127549/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com