"The common language runtime was unable to set the breakpoint"



我正在尝试从VS 2010开发CRM 2011中的解决方案。当它起作用时,它有点好(好吧,CRM是一只狗,但代码起作用)。但它偶尔会把玩具从婴儿车里扔出来,拒绝调试。我目前遇到的问题是,它抗议在我的例程中的某些行上"公共语言运行时无法设置断点"。例如

private static TimeSpan FindWorkTime(DateTime T1, DateTime T2, Boolean[, ,] supporthours)
{
    TimeSpan SlotDuration = new TimeSpan(0, 30, 0);
    TimeSpan fwt = new TimeSpan(0); // This I can put a break point on
    if (T2 > T1)                    // This tells me the CLR can not set a breakpoint!
    {
        DateTime T1S = servicecase.FindTimeSlotStart(T1);
        DateTime T2S = servicecase.FindTimeSlotStart(T2);

该代码未优化。工作室(或CLR或任何让人沮丧的东西)决定真正认可它们工作的临界点。那么,究竟为什么要做一些行而不是其他行拒绝调试呢!

我在这里搜索了一下,大多数答案都涉及优化(未打开)或运行两份工作室(并非如此)。

终于解决了。答案当然是CRM是一堆。。。

正在运行的代码不是已经部署到crm服务器的代码。即使服务器上只有一个版本的DLL,而且它与开发系统上的版本相同,但它不是在服务器上运行的代码版本。CRM运行的代码可能是DLL中的代码,也可能是数据库中的副本,但与DLL中的不一定匹配。无论出于何种原因,即使代码被重新部署,CRM似乎仍然想从数据库中获取旧副本。为了稳定,除了部署代码外,还需要通过插件注册工具重新注册。

(这花了太长时间才找到,因为我认为CRM会对我撒谎,说什么不诚实,最好的解决方案是用CRM以外的东西重写应用程序)

相关内容

最新更新