VS 2010에서 생성 된 C++ DLL 프로젝트가 있습니다. COM (ATL)로 노출되어 있습니다. 이 DLL을 다른 .NET 프로젝트에 참조로 사용했습니다. 다음과 같이 C++ 프로젝트 링커 설정은 설정 : 나는 2010 년 C++ 프로젝트가 잘 구축 TFS에서이 두 프로젝트를 빌드 할 수있는 빌드 정의를 생성하지만, C++ 프로젝트의 출력 DLL이 등록되어 있지 않기 때문에 .NET 프로젝트가 실패 COM DLL 등록이 TFS 2010에서 실패했습니다
"Register Output" = Yes "Per-user Redirection = Yes. "Per-User redirection"= false로 설정하면 작동하지 않습니다. 또한 WF 액티비티 'InvokeProecss'를 사용하여 Regsrv32/배치 파일/내 자신의 exe 등을 사용하여 C++ DLL을 등록하려고했지만 종료 코드는 5가되었습니다. TFS 2010은 Windows 2008 Server R2에 있습니다. 그리고 저는 관리자로서 프로세스를 실행하지 않고 있다고 생각합니다.
tlbimp를 사용하여 interop dll을 생성 한 다음 .NET proejct에서이 interop을 참조하면 tfs 빌드에서 oviously tlb를 호출하는 InvokeProecss를 추가해야합니다. 그러나 우리의 일반적인 관행은 .NET proejct에서 직접 COM dll을 참조하는 것이므로 허용되지 않습니다.
아무도 도와 드릴 수 있습니까?
사용자 이름/암호를 묻지 않고 관리자로 tfs 자동화 빌드 활동 'InvokeProcess'를 실행할 수 있습니까?
COM dll을 직접 참조 할 수 없으므로 항상 tlbimp.exe가 필요합니다. 빌드 서버에 COM 서버를 등록하는 것은 레지스트리 오염 만 일으킬 수있는 끔찍한 방법입니다. 그리고 필요하지 않습니다. tlbimp.exe를 실행하면 관리자 권한이 필요하지 않습니다. –