2016-06-16 2 views
1

모든 컴파일에서 내 프로그램에서 출력 dll이 변경되고 모든 컴파일 후에 dll을 다시 등록해야합니다. Visual Studio 명령 프롬프트을 통해 등록 할 수 있습니다. regasm mydll.dll. 그러나 나는 매번 그것을하고 싶지 않고 자동으로 원한다. 몇 가지 연구를 거친 후 Visual Studio에서 빌드 이벤트 (프로젝트> 속성)을 사용할 수 있음을 발견했습니다. 그러나 이전에 Build Events를 사용한 적이 없으며 실제로 어떻게 될지 이해할 수 없습니다. 사전 빌드 이벤트 명령 행에 내 dll 경로를 써야합니까?RegAsm으로 DLL을 등록하는 방법 VS2013

내 DLL 위치 : C : \ Program 파일 (x 86) \하기 Onur \ 클라이언트 \ 빈 \ client.dll

내 RegAsm을 위치 : C : \ WINDOWS \ Microsoft.NET \ Framework64 V4 \. 0.30319 \ RegAsm.exe

빌드 이벤트 섹션의 빌드 전 및 빌드 후 명령에 무엇을 써야합니까?

나는 그 (것)들을 시도하고 그러나 그것조차 컴파일되지 않았다. VS Post Build Event

+1

더 중요한 세부 사항은 * 이전 버전을 등록 취소하는 것입니다. 너가 그때하지 않으면 너는 너의 기입의 꽤 큰 난장판을 만들 l 수 있는다. 공통적 인 필요성을 감안할 때, 이것은 간단한 체크 박스로 모두 처리됩니다. 프로젝트> 속성> 빌드 탭> "COM interop에 등록"을 선택하십시오. 어느 쪽이든이 레지스트리 키는 승격 된 프로그램에서만 수정할 수 있으므로 VS를 올리십시오. 바로 가기를 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오. –

+0

안녕 한스, 답장을 보내 주셔서 감사합니다. 나는 그 박스를 체크했고 프로젝트의 모든 빌드에서 dll을 등록 취소해야한다는 것을 알았다. 나는 당신의 대답을 따르고 곧 결과를 알려 드릴 것입니다 – onur

답변

1

RegAsm 실행 파일은 .Net Framework 버전 폴더에 있지만 기본적으로 경로에 없습니다.

다행히 포스트 빌드 이벤트에서 사용할 수있는 FrameworkDirFrameWorkVersion의 두 가지 환경 변수가 있습니다. MSDN 설명서에서 Environment Variables을 사용하는 방법을 설명합니다. $(TargetPath)가 큰 따옴표로 묶여 방법

$(frameworkdir)\$(frameworkversion)\regasm.exe "$(TargetPath)" 

공지 방지하기 위해 : (새 DLL이 필요 컴파일 준비 할 수 있기 때문에) 특정 사례를 들어

다음은 빌드 후 이벤트에 작업을 수행 경로에 공간이있는 경우의 사고.

RegAsm은 상승 된 권한을 필요로하므로 Visual Studio를 먼저 실행해야 RegAsm의 실행이 우선적으로 이루어집니다.

오류 진단을 위해 출력 빌드 패널을 사용하십시오.

+0

안녕하세요 르네 답장을 보내 주셔서 감사합니다. 다음과 같이 PostBuild 섹션에 작성했습니다. ** $ (frameworkdir) \ $ (frameworkversion) \ regasm.exe "$ (C : \ Program Files (x86) \ Onur \ Client \ Bin \ client.dll) ** 하지만 컴파일이 안됩니다. 하지만 Visual Studio의 오류 목록에는 오류가 없습니다. 출력 결과는 -> https://snag.gy/vJ8uxK.jpg 어디에 놓칠 수 있습니까? 감사합니다. – onur

관련 문제