2011-09-27 3 views
4

MSBuild 명령 줄을 사용하여 VB .NET 프로젝트를 컴파일하는 중 오류가 발생합니다. 완벽하게 정상적으로 devenv를에서 작품 실행 : 문제MSBuild 컴파일 오류 이상한

error BC30518: Overload resolution failed because no accessible 'Invoke' can be called with these arguments: 

라인 :

Windows.Application.Current.Dispatcher.Invoke(Sub() InteractionManager.Current.DisplayException((DirectCast(e.ExceptionObject, Exception)))) 

왜 MSBuild에서이 balking됩니다 이것 devenv를/비주얼 스튜디오가없는 경우? 그리고 왜 이것이 전혀 문제가되는 것입니까? 괜찮아 보입니다.이 행에 대해 흥미로운 점은 Invoke가 Delegate 클래스 객체 (강력한 형식의 델리게이트가 아닌)를 사용한다는 것입니다. C#에서는 람다를 사용할 수 없습니다. 나는 VB .NET에서 지금있는 표현 (나는 새로운 액션 뭔가를해야 할 것 (() => ...)

+0

일반적인 문제는 자세한 정보 로깅 오류를 로깅하고 실제로 호출되는 명령 줄 등을 확인하십시오. 자신이 생각하는 버전의 VB 컴파일러를 호출하지 않는다는 것을 알 수 있습니다. – AakashM

+0

c : \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Vbc.exe (예상대로) 실행 – Jeff

+0

MSBuild를 통해 sln이 호출 될 때 WindowsBase 및 PresentationCore 참조를 요청하는 프로젝트가 많이 있습니다. 그러나 devenv에서 달리면 안됩니다. 참조를 추가하는 것만으로도 설명 할 수없는 문제가 해결 된 것 같습니다. – Jeff

답변

0

난 당신이 .NET 버전을 혼합되어 있다고 생각합니다.

System.Windows.Threading.Dispatcher가있다 NET 4.0 또는 그 이전 버전에서는 모든 사용 가능한 오버로드가 두 개 이상의 인수를 사용하여 규칙을 위반하고 사용자에게 표시되는 오류 메시지를 표시합니다.

그러므로 devenv 당신은 아프다. e execution은 VS2012 베타 버전 인 반면 msbuild 버전은 더 일반적인 버전입니다.

Path 환경 변수를 조정하여 불일치를 해결할 수 있어야합니다.

+0

아니요, Visual Studio 2010. – Jeff

+0

@ JeffN825 - 'Imports'지시문을 자세히 살펴보십시오. .NET 4.5가 여러분 머신의 어디에도 설치되어 있지 않다는 확신이 있다면, 단일 인자'Invoke '는 확장 메소드이며,이 컨텍스트에 어떤 코드가 기여하는지 알아야합니다. –