2012-10-10 1 views
3

Register for COM Interop을 검사 한 여러 프로젝트가있는 솔루션이 있습니다.COM Interop에 등록 Visual Studio 2012에서 항상 실행

결과 TLB를 참조하는 Visual Basic 6 프로젝트가 있습니다. VB6에서 한 가지 문제는 dll/tlb를 참조 할 때 해당 파일에 잠금을 설정하는 것입니다.

Visual Studio 2010을 사용하면 재 구축을하거나이 interop 프로젝트 중 하나를 변경하지 않으면 VB6 프로젝트를 열어 솔루션을 빌드/실행할 수 있습니다. 어셈블리가 잠 깁니다.

그러나 Visual Studio 2012를 사용하면 아무 것도 변경되지 않은 간단한 빌드에서도 분명히 항상 regasm을 수행하므로 내 VB6 프로젝트를 디버깅 할 수 없습니다.

이 새로운 의 Visual Studio에서 regasm을 실행하면 사용하지 않도록 설정할 수 있습니까?

편집 : 저를 단순화 할 수 있도록 허용 :

  • 비주얼 스튜디오 2010를 사용하여, 나는 Build-->Build Solution을 명중하고 Register for COM Interop로 표시되고 파일이 변경되지 않은 내 어셈블리 중 하나의 출력을 확인합니다.
  • Visual Studio 2012를 사용하여 Build-->Build Solution을 확인하고 동일한 어셈블리를 확인하면 업데이트되고 Build Solution을 누를 때마다 업데이트됩니다.

는 나는 (다시) 2010 년

편집에서와 마찬가지로 비주얼 스튜디오 2012의 동작은 동일하게 작동하려면 : 내가 Microsoft Connect이를 기록했다. 누군가 답장을 보내거나 회피 방법을 게시하면 답변을 게시 할 것을 촉구합니다.

+0

VB6은 항상 파일에 대한 잠금을 유지하므로이 기능이 놀랍습니다. 2010 프로젝트를 참조하는 VB6 응용 프로그램을 열면 VS2010 프로젝트를 다시 컴파일 할 수 없습니다. –

+0

@MattWilko : VS2010에서 ** 다시 작성하면 VB6을 계속 열 수는 없지만, ** 빌드 **, 작동합니다. –

+0

[Connect] (http://connect.microsoft.com) 사이트에서 Microsoft에 버그로보고 해 주셨습니까? –

답변

0

VB6 및 VS20XX를 실행할 때 항상 이와 같은 문제가 발생했지만 항상 다시 작성했습니다. VB6을 테스트 목적으로 사용하는 것을 중단하는 것이 좋습니다. 테스트 프로젝트를 만들고 .NET 코드로 .NET에서 모든 테스트를 수행하는 것이 훨씬 쉽다는 것을 알게되었습니다. 이것은 단지 약간의 셋업 만 필요로 할 것이지만 그것은 내 의견으로는 충분할 가치가있다.

이 질문은 귀하의 특정 질문에 대한 답변이 아니라는 점을 알고 있습니다. 당신이 묘사하고있는 문제에 관한 한, 나는 행동의 변화를 복제 할 수 없다. 먼저 VS201X를 열어서 전체 솔루션을 다시 빌드하고 VB6을 열고 노출 된 COM DLL에 대한 참조를 추가하십시오. 예기치 않은 것을 발견하지 못했습니다.

  1. 빌드 한 나는 COM DLL
  2. 빌드에서 아무것도 변경되지 않은으로 잘 작동 파일이
  3. 을 잠겨 나는이 파일을
  4. 가 다시 잠겨과 같이 COM DLL의 코드를 변경 실패 할 경우 실패
+0

제안 해 주셔서 감사합니다. 불행하게도 디버깅을 위해 VB6를 사용하지 않는 것은 문제가되지 않습니다. C# 코드와 VB6 코드 사이에 상호 의존성이 있기 때문입니다. 근본 문제/문제가 무엇인지 명확히하기 위해 (잘하면) 내 질문을 업데이트했습니다. –

관련 문제