2010-01-01 4 views
1

내 프로젝트에 대해 여러 dll (약 100) 컴파일해야합니다. 각 프로젝트/빌드에는 하나의 소스 코드 파일 만 다릅니다. 이러한 dll에는 색인이 포함되어야합니다. like calc0023.dll여러 dll을 컴파일

가장 쉬운 방법은 무엇입니까?

+0

"각 프로젝트/빌드에는 하나의 소스 코드 파일 만 다를뿐"이란 의미는 무엇입니까? project1과 project2가 하나만 제외하고 정확히 같은 소스 파일을 갖게된다는 것을 의미합니까? 그건 이상한데, 그게 니가 의미하는 것이면 ... –

+0

미안하지만 내 설명이 짧았 어. 각 dll에는 단지 2 개의 원시 파일이 있고, 1 개의 파일은 각 dll를 위해이고 두번째 파일은 모두를 위해 동일이다. – volody

+1

나는 각 dll을위한 프로젝트 파일을 만들고 싶지 않다. – volody

답변

1

cmd를 스크립트 : 모든 소스 파일이 같은 디렉토리에있는 경우

for %%f in (*.cs) do (
    csc.exe /target:dll /o:outdir\%%~nf.dll %%f CommonFile.cs 
) 

, 당신은 루프에서 일반적인 파일을 제외해야합니다.

for %%f in (*.cs) do (
    if not %%f==CommonFile.cs (
     csc.exe /target:dll /o:outdir\%%~nf.dll %%f CommonFile.cs 
    ) 
) 

이전 스크립트는 생성 된 DLL의 이름을 고유 한 원본 파일의 이름으로 지정합니다. 파일 이름에 숫자 색인을 사용하려면 다른 변수를 도입해야합니다.

setlocal enabledelayedexpansion 
set count=1 
for %%f in ("*.cs") do (
    if not %%f==CommonFile.cs (
     set CSTR=00!COUNT! 
     set OUTFILE=Calc!CSTR:~-3! 
     csc.exe /target:dll /o:outdir\!OUTFILE!.dll %%f CommonFile.cs 
     set /a COUNT=!COUNT!+1 
    ) 
) 
endlocal 
+0

( msbuild/p : 구성 = 디버그; appname = %% ~ nf "MyDll.proj" ) – volody

0

당신이 사용하고있는 (Visual Studio ??) 버전이 무엇이든, 나는 확실히 명령 줄에서이를 해제 할 것입니다. 가장 간단한 가능한 작업 :

devenv를 사용하여 각 프로젝트 프로젝트/솔루션 파일을 호출하는 스크립트를 작성하십시오.

build using the command line에 관한 msdn 페이지를 참조하십시오.

+0

당신은 devenv가 필요 없다. VS2005 이상을 사용하는 경우 MSBUILD를 사용하여 명령 줄에서 vs 프로젝트를 빌드 할 수 있습니다. (* .vb)의 %% f에 대한 – Cheeso

0

각 DLL에 코드 반복이 너무 많으면 여기에 내가 제안한 코드가 있으며 모든 DLL에 공통된 코드를 가져 와서 해당 코드/함수의 DLL을 만듭니다. 그런 다음 내부적으로 메인 DLL을 호출하는 나머지 DLL을 만듭니다. 그러나 특정 이름 지정 및 빌드 순서와 같은 기능을 사용하려면 배치 파일을 작성해야합니다. 프로젝트 옵션의 비주얼 스튜디오는 프로젝트를 빌드 할 때 필요한 다양한 명령 줄 매개 변수를 표시합니다.

하지만 난 당신이 DLL 자체를 관리하기 어려울 정도로 많은 DLL을 생성하여 해결해야 할 특정 요구 사항을 알지 못합니다. 한 가지 이점은 반복적 인 코드로 공통 DLL을 생성하는 경우입니다. 주 코드에서 아무 것도 변경하지 않으면 100 개의 프로젝트를 컴파일하는 대신 100 개의 프로젝트 대신 하나의 프로젝트 만 다시 컴파일하면됩니다.

관련 문제