2010-01-01 5 views
1

Je dois compiler plusieurs dll (environ 100) pour mon projet. Chaque projet/construction n'aura qu'un seul fichier de code source différent. Ces dll devraient avoir un index inclus. Comme calc0023.dllcompiler plusieurs dlls

Quelle est la manière la plus facile de faire cela?

+0

Que signifie "Chaque projet/construction aura un seul fichier de code source différent"? Voulez-vous dire que project1 et project2 auront les mêmes fichiers source, sauf un? C'est plutôt étrange, mais si c'est ce que vous voulez dire ... –

+0

désolé ma description était courte. Chaque DLL a seulement 2 fichiers source, un fichier est spécifique à chaque DLL et le second fichier est le même pour tous. – volody

+1

Je ne veux pas créer un fichier de projet pour chaque DLL – volody

Répondre

1

un script .cmd:

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

Si tous les fichiers source sont dans le même répertoire, vous devez exclure le fichier commun de la boucle.

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

Les scripts précédents nomment la DLL générée avec le nom du fichier source unique. Si vous souhaitez utiliser un index numérique pour le nom de fichier, vous devez introduire une autre variable.

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

for %% f in (* .vb) faire ( msbuild/p: Configuration = Debug; appname = %% ~ nf "MyDll.proj" ) – volody

0

Quelle que soit la version de (visual studio ??) que vous utilisez, je vais certainement les lancer sur la ligne de commande. La chose la plus simple possible:

Ecrivez un script qui appelle chaque projet/fichier de solution à l'aide de devenv. Voir la page MSDN sur comment build using the command line.

+0

Vous n'avez pas besoin de devenir. Si vous utilisez VS2005 ou une version ultérieure, vous pouvez utiliser MSBUILD pour générer des projets vs à partir de la ligne de commande. – Cheeso

0

Si vous avez tellement de répétition de code dans chaque DLL, voici ce que je suggère, prendre le code commun à toutes les DLL et créer une DLL de ce code/fonctions. Puis créez le reste des DLL qui appellent en interne la DLL principale. Mais pour avoir des fonctionnalités telles que le nommage et l'ordre de construction, vous devez écrire le fichier batch. Visual Studio dans les options de projet affiche les différents paramètres de la ligne de commande qui peuvent vous aider à construire les projets.

Mais je ne sais pas à quelle exigence particulière vous allez répondre en créant autant de DLL, ce qui rendra difficile la gestion des DLL elles-mêmes. Un avantage que je vois si vous créez une DLL commune avec le code répétitif est: Si vous changez quelque chose dans le code principal, vous avez juste besoin de recompiler un projet au lieu de 100 projets à la place où vous auriez compilé 100 projets.