花了几个小时拉我的头发试图弄清楚为什么我的ssis脚本组件没有在遇到断点时进入调试器。 我在网上搜索并资助64位设置(项目 - > Properies - >调试),但是它没有帮助我。
事实证明,如果我在代码中使用字符串插值($“{someVar}”),则调试器无法启动。 一旦我用旧的string.Format(“{0} ...”,param1,...)方法替换它,我的断点就被击中了,我可以逐步完成代码。
代码以任何一种方式工作,它只是受新语法影响的调试器。
我希望这有助于某人。
答案 0 :(得分:2)
还花了几个小时拉出我的头发并发现它确实是由于新版本的Visual Studio中无法识别新的Roslyn编译器功能。 (我正在使用带有SSIS脚本任务的VS2015)
为了获得断点,我在早期版本的VS(2012)中打开了项目,并对源代码进行了更改以使其成功编译。一旦我得到了它,我在2012年跑了,瞧! - 它击中了所有断点。重新打开项目并在VS2015中运行并确认它按预期工作。
答案 1 :(得分:1)
也花了几个小时然后终于找到了你的帖子......谢谢你先生!
我也在使用VS2015和SSIS脚本任务。对我而言,函数nameof()
负责不启动调试器。用反射替换函数对我有用:Get string name of property using reflection
答案 2 :(得分:1)
实际上,将C#脚本任务限制为C#4.0的语言功能可使Debugger重新焕发活力。在我的情况下,添加单个null运算符会在SQL Server / SSIS 2016上使用Visual Studio 2015(VSTA)导致调试器问题。
要将脚本限制为 C#4.0 ,我们可以在“任务”的“生成”设置中强制执行特定的语言级别:
然后您应该能够再次调试C#脚本任务。
答案 3 :(得分:1)
我想以上已解决了我的问题,但是还有另一个原因/解决方法需要实现,以使脚本任务调试再次起作用。
在我的实例中,问题是Resharper使用的调试器集成,如以下问题的链接解决方案中的用户“ Richard T. LaSalle”所突出显示:Could not set BreakPoint in SSIS ScriptTask
TL; DR,如果使用Resharper,请关闭Debugger Integration
答案 4 :(得分:0)
Microsoft发布了SQL Server Integration Services Projects的更新v3.2,它解决了Roslyn和.Net 4.5之后引入的其他C#语言功能的问题。 C#功能。
坏消息-此修复仅适用于Visual Studio 2019,您必须升级VS才能使用它。