代码之家  ›  专栏  ›  技术社区  ›  J Weezy

SSIS:如何调试脚本组件内部引用的自定义程序集

  •  0
  • J Weezy  · 技术社区  · 3 年前

    我能够调试通过Visual Studio的添加到SSIS的自定义组件 Attach to Process 特色

    但是,在SSIS包的脚本组件(即数据流中的C#脚本)内部执行自定义程序集时,是否可以调试该程序集?如果是,如何?

    我尝试了以下操作,但没有成功:

    1. 使用断点生成程序集 (请参阅此问题底部的注释) *
    2. 启动SSIS包并在断点处停止执行
    3. 将打开程序集文件的Visual Studio实例附加到正在运行SSIS包的DtsDebugHost.exe的执行实例

    程序集文件中的所有断点都切换为:

    当前不会命中断点。尚未为此文档加载任何符号。

    我应该加载什么符号?我检查了模块窗口,但加载这三个程序集没有帮助,当我尝试加载两个SqlServer DTS程序集的符号时,它要求我选择一个具有相同文件名和文件类型的非常特定的文件,其中两个文件似乎都是临时文件名-我不知道在这里加载什么。

    Modules Window

    *注意:我在自定义程序集上设置了以下生成后事件:

    "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\gacutil.exe" -u $(TargetName)
    "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\gacutil.exe" -i $(TargetFileName)
    copy $(TargetFileName) "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8"
    copy $(TargetFileName) "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn"
    

    更新1

    在发布这个问题之前,我还尝试将程序集的源代码文件添加到脚本组件的,但这导致引发了与我试图调试的原始错误无关的其他错误。程序集内部有很多递归,它也有试图加载自己的程序集的代码。我无法确切地理解是什么导致了这些不相关的错误。所以,我放弃了那条路。

    还有一点可能值得一提,如果不是为了程序员的幽默,这个程序集非常陈旧,几乎没有代码注释。当我在我们的代码回购中发现它的源代码时,它不会打开,因为它仍然是目标。NET Framework 2.0,甚至无法从Microsoft下载。我不得不升级它,所以我选择了。NET框架4.8。我尝试切换到4.7,因为脚本组件默认以4.7为目标,而且这种方式有些硬编码,因为每次我保存并重新打开它时,它都会降级回4.7。但是,两者都不是。NET Framework版本解决了我在脚本组件中调试程序集的能力。

    因此,我采用了添加文本文件写行的方法,这些写行在出错之前输出代码到达的位置。这是调试IMHO的一种蹩脚方法。

    更新2

    我试图加载的符号 Microsoft.SqlServer.ManagedDTS.dll 并且打开的文件对话框窗口正在查找 Microsoft.SqlServer.ManagedDTS.pdb Microsoft.SqlServer.ManagedDTS.dbg 。我进去了 C:\Program Files (x86)\ 并运行以下操作:

    • dir /s /b Microsoft.SqlServer.ManagedDTS.pdb
    • dir /s /b Microsoft.SqlServer.ManagedDTS.dbg

    但是,两者的反应都是 File Not Found 。有什么想法吗?

    Load ManagedDTS symbols

    0 回复  |  直到 3 年前
        1
  •  1
  •   J Weezy    3 年前

    在SSIS包的执行过程中,我找不到调试程序集的方法。正如@billinkc之前所建议的那样,我必须从SSIS包中检索行的数据,然后通过控制台应用程序将其输入到程序集中。我不提这个问题。如果将来有人有更好的答案,请分享。

    推荐文章