Visual Studio 2005
2007. 11. 2.
안혁
http://hyok.kr


요즘은 서버가 64비트가 많지요? 하지만 개발자 PC는 아직 32비트가 많습니다. 더군다나 노트북이라면 더욱 그렇지요. 개발자 PC(32bit)에 작업한 프로젝트를 서버에 올려놓은 후에 서버에서 컴파일 하게 되는 경우, 빌드 후 이벤트가 문제를 발생시킬 수 있습니다. 32비트와 64비트 윈도우에서 regsvcs, regasm, gacutil의 경로가 다르기 때문입니다.

서버와 개발자 PC에 각각 환경변수 PATH를 적절히 잡아 주면 다음에 방법을 사용하지 않으셔도 됩니다. 환경변수를 매번 잡아주지 않고도 빌드 후 이벤트가 작동되도록 하려면 다음을 빌드 후 이벤트에 추가하세요.

echo ***** 빌드 후 이벤트 시작*****
set PROCESSOR_ARCHITEW6432
if ERRORLEVEL 1 GOTO x86
if NOT ERRORLEVEL 1 GOTO x64

:x86
set GACUTIL="%ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe"
set REGSVCS="%windir%\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe"
set REGASM="%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe"
GOTO end

:x64
set GACUTIL="%ProgramFiles(x86)%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe"
set REGSVCS="%windir%\Microsoft.NET\Framework64\v2.0.50727\RegSvcs.exe"
set REGASM="%windir%\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe"
GOTO end

:end
echo gacutil 경로 : %GACUTIL%
echo regsvcs 경로 : %REGSVCS%
echo regasm  경로 : %REGASM%

%REGASM% "$(TargetPath)"
%GACUTIL% /i "$(TargetPath)"
%REGSVCS% /u "$(TargetFileName)"
%REGSVCS% "$(TargetPath)"


검은 글씨는 프로젝트에 따라서 변경되는 부분이겠습니다. regasm, regsvcs, gacutil 명령어 대신 %REGASM%, %GACUTIL%, %REGSVCS%를 사용하면 됩니다.
Posted by 안혁 windfruit

Visual Studio 2005
.NET Framework 2.0
2007. 10. 31.
안혁
http://hyok.kr

빌드 후 이벤트에서 DLL 등록을 할 경우 환경변수 PATH에 경로를 잡아주면 되지만, .NET 1.1 개발로 동시에 하고 있다면 매번 환경변수를 고쳐주어야 하므로 곤란합니다. 빌드 후 이벤트 실행 시 절대경로를 입력함으로 Visual Studio 2003 이든 Visual Studio 2005  이든 빌드 후 이벤트 작업이 가능하게 하는 것이 좋겠지요.
단, 32비트 윈도우와 64비트 윈도우의 경로에 차이가 있음으로 이를 주의하여야 합니다.

* gacutil.exe

- 32bit
%ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\
- 64bit
%ProgramFiles(x86)%\Microsoft Visual Studio 8\SDK\v2.0\Bin\



* RegSvcs.exe

- 32bit
%windir%\Microsoft.NET\Framework\v2.0.50727
- 64bit
%windir%\Microsoft.NET\Framework64\v2.0.50727



이렇게 하면 Windows를 D에 설치한 사람들도 특별한 경로 변경 없이 해당 명령어를 사용 할 수 있겠습니다.
커맨드 창에서 직접 실행의 경우, 저 경로를 다 입력하는 것은 매우 번거로운 일이지요. 명령어만 입력하면 결국 환경변수 PATH의 영향을 받게 되므로 선호하는 버전을 PATH에 잡아주든지, 각각의 명령 프롬프트(시작->프로그램->Visual Studio 200? 에 있음)를 실행해서 작업해야 하겠습니다. 어떻게 설정했는지 꼭 기억하시구요. 예상치 못했던 에러가 발행할 수 있습니다. 등록한 DLL을 못찾겠다며 멈춰 버린다던지...

Posted by 안혁 windfruit
이전버튼 1 이전버튼