【问题标题】:VS 2015 SSIS Script Tasks cannot be debuggedVS 2015 SSIS 脚本任务无法调试
【发布时间】:2016-11-18 12:40:44
【问题描述】:

我花了几个小时试图弄清楚为什么我的 ssis 脚本组件在遇到断点时没有闯入调试器。 我在网上搜索并资助 64 位设置(项目 -> 属性 -> 调试)被关闭,但它没有帮助我。

事实证明,如果我在代码中使用字符串插值 ( $"{someVar}" ),则调试器不会启动。 一旦我用旧的 string.Format("{0}...", param1, ...) 方法替换它,我的断点就会被命中,我可以单步执行代码。

代码可以以任何方式工作,只是受新语法影响的调试器。

我希望这对某人有所帮助。

【问题讨论】:

  • 也许用微软记录错误?
  • 我遇到了脚本任务未在控制流中调试的问题,我使用 resharper 格式化脚本,这增加了插值。一旦我删除了这个并使用了 string.format,脚本就可以被调试了。
  • 是否针对此问题提出过连接工单?
  • 我遇到了这个问题并且一直在使用字符串插值 - 我将它们全部替换为 string.Format 并且仍然没有命中断点。它快把我逼疯了。还有其他想法吗?
  • 赞成。感谢您发布此信息。我遇到了同样的问题,您的解决方案解决了它。

标签: c# c#-4.0 visual-studio-2015 ssis


【解决方案1】:

确实,将 C# 脚本任务限制为 C# 4.0 的语言功能使调试器重新焕发生机。在我的例子中,添加单个空合并运算符会导致在 SQL Server/SSIS 2016 上使用 Visual Studio 2015 (VSTA) 的调试器出现问题。

要将脚本限制为 C# 4.0,我们可以在任务的构建设置中强制执行特定的语言级别

  • 打开有问题的脚本任务,单击“编辑脚本...”按钮打开 Visual Studio (VSTA)。
  • 在解决方案资源管理器中,右键单击 Project 节点并选择 Properties
  • 在“项目”窗口中,转到构建选项卡,向下滚动并单击高级..按钮。
  • Advanced Build Settings 窗口中,将 Langauge Version 从“default”更改为“C# 4.0”。
  • 清理/重建脚本任务,修复编译错误。
  • 最后,退出 VSTA,重建项目

然后您应该能够再次调试 C# 脚本任务。

【讨论】:

    【解决方案2】:

    我还花了几个小时拉扯头发,发现这确实是由于旧版本的 Visual Studio 无法识别新的 Roslyn 编译器功能。 (我正在使用带有 SSIS 脚本任务的 VS2015)

    为了获得断点,我在早期版本的 VS (2012) 中打开了项目,并对源代码进行了更改以使其成功编译。一旦我开始建造它,我就在 2012 年跑了,瞧! - 它击中了所有的断点。重新打开项目并在 VS2015 中运行并确认它按预期工作。

    【讨论】:

    • 这对我有用!就我而言,我必须摆脱字符串插值、空条件运算符(?.?() 等)和表达式主体成员(=>)。
    【解决方案3】:

    也花了几个小时,终于找到了你的帖子……谢谢你,先生!

    我也在使用带有 SSIS 脚本任务的 VS2015。对我来说,是函数nameof() 负责不启动调试器。用反射替换函数对我有用:Get string name of property using reflection

    【讨论】:

      【解决方案4】:

      我认为上述方法已经解决了我的问题,但我需要实施另一个原因/解决方法以使脚本任务调试再次工作。

      在我的例子中,问题是 Resharper 使用的调试器集成,正如用户“Richard T. LaSalle”在以下问题的链接解决方案中强调的那样:Could not set BreakPoint in SSIS ScriptTask

      TL;DR,如果使用 Resharper,请关闭调试器集成

      【讨论】:

      • 谢谢,关闭 ReSharper 的调试器集成功能对我有用。我使用 SSDT 15.8.0 在 VS2017 v15.9.9 中为 SSIS 开发。我什至可以为 SSIS 项目使用 64 位运行时。但我需要将脚本的 C# 语言限制为 C# 5。
      【解决方案5】:

      Microsoft 发布了 SQL Server Integration Services Projects 的更新 v3.2,它解决了 Roslyn 和 .Net 4.5 之后引入的其他 C# 语言功能的问题。 C# 功能。
      坏消息 - 此修复仅适用于 Visual Studio 2019,您必须升级 VS 才能使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        相关资源
        最近更新 更多