c# 하나 공용 언어 런타임에서 중단 점을 설정할 수 없습니다.



중단점을 바인딩하지 못했습니다 (6)

CRM에 대해 디버깅하는 경우 플러그인 등록 포인트를 업데이트하지 않는 경우이 방금 발견 한 또 다른 원인이 있습니다. 새 DLL을 대상 컴퓨터에 복사하고 DLL이 아닌 해당 프로세스에 원격으로 연결할 경우에도 CRM이 사용합니다. CRM은 플러그인 등록을 재실행 할 때까지 데이터베이스에서 이전 버전의 사본을 가져 오려고 시도합니다.

나에게 하루 반을 낭비하는 오류!

이것은 실제로이 질문의 또 다른 부분입니다.

오류 설정 중단 점이 있지만 디버깅 중 일부 행에서만

저는 2010 년 대 CRM 2011 플러그인을 원격 디버깅합니다.

나는 일부 소스 코드를 제외하고 코드 전체에 브레이크 포인트를 설정할 수있는 소스 파일 중 하나이다.

중단 점을 설정하려고하면 "다음과 같은 중단 점을 설정할 수 없습니다."및 "공용 언어 런타임에서 중단 점을 설정할 수 없습니다."라는 오류가 발생합니다.

protected override void ExecutePlugin()
{
    SetStateResponse response = new SetStateResponse(); // Breakpoint works

    // Message switch
    switch (_crmMessage) // Breakpoint error
    {
        case CrmPluginMessageEnum.Create:

        Entity pimage = null; // Breakpoint error
        if (_context.PostEntityImages.ContainsKey("postcreate")) // Breakpoint works
            pimage = _context.PostEntityImages["postcreate"]; // Breakpoint error

        break; // Breakpoint error
        }
} // Breakpoint error

UPDATE 또한 모듈 창에 DLL이 최적화 됨으로 표시됩니다. 아니요 사용자 코드 : 예 기호 상태 :로드 된 기호


Answer #1

두 가지 가능성은 이미 다른 답변에 의해 참조 된 종류입니다.

  1. 릴리스 빌드는 코드를 제거하거나 최적화하기 때문에 릴리스 빌드 대신 어셈블리의 디버그 빌드를 사용해야합니다.
  2. 프로젝트 속성 탭의 Visual Studio에서 어셈블리를 배포 할 때마다 버전을 업데이트해야합니다. 버전을 증가 시키면 CRM은 이전 어셈블리 버전을 언로드하고 IIS를 재설정하지 않고 새 어셈블리를 다시로드해야합니다.

Answer #2

이 오류는 프로젝트 디버깅을 시작할 때 발생하며 오류를 다시 작성한 후에 모든 프로젝트 정리 및 모든 프로젝트 다시 작성을 통해 해결됩니다.


Answer #3

방금 비슷한 경험을했고 그 일을 처리 한 방식은 루틴이 호출 된 지점에 중단 점을 넣은 다음 내가 수행 한 것으로 생각했던 것을 정확히 볼 때까지 루틴에 단일 단계 밟았습니다. 필자의 경우에는 루틴의 모든 코드가 실행되는 것을 방지하는 리턴이 있었기 때문에 옵티마이 저는이 코드를 모두 버렸다. 때로는 어리석은 짓 이겠지? 어쨌든 호출 스택의 상위 레벨에서 시작하여 문제가있는 루틴으로 들어가면 문제의 원인이 더 분명해질 수 있습니다.


Answer #4

더 나아가 최적화 된 DLL에 대한 업데이트로 인해 중단 점이 작동하지 않는 위치에 표시된 행은 전체 switch 문이 사용하지 않는 변수에 값을 할당할지 여부를 결정할 때 최적화되지 않습니다. switch 문 범위를 벗어나지 않습니다. 이와 같이 컴파일러는 switch 문에 대한 코드를 전혀 생성하지 않습니다. 아무 것도하지 않거나 jit이 동일한 이유로 런타임에 제거하지 않기 때문입니다.


Answer #5

Visual Studio의 두 인스턴스에서 프로젝트를 열었을 때도 똑같은 문제가있었습니다. 내가 디버깅하지 않은 프로젝트는 파일을 잠그고 "이 파일이 소스 편집기 외부에서 수정되었습니다."라고 알립니다. 내 비 디버깅 솔루션에서 변경 사항을 수락 한 후 더 이상 오류가 발생하지 않았으며 내 디버거가 내 솔루션에서 중단되었습니다.

이 오류에 대한 많은 원인이있는 것처럼 들리지만, 이것은 나에게 도움이되었습니다.





dynamics-crm-2011