代码之家  ›  专栏  ›  技术社区  ›  volody

编译多个dll

  •  1
  • volody  · 技术社区  · 16 年前

    我必须为我的项目编译多个dll(大约100个)。 每个项目/生成将只有一个不同的源代码文件。 这些dll应该包含索引。像calc0023.dll

    最简单的方法是什么?

    3 回复  |  直到 16 年前
        1
  •  1
  •   Cheeso    16 年前

    命令脚本:

    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
    
        2
  •  0
  •   DaveParillo    16 年前

    什么版本的(visual studio??)您正在使用,我肯定会在命令行启动这些命令。最简单可行的方法是:

    使用devenv编写调用每个项目项目/解决方案文件的脚本。

    请参阅MSDN页上的如何 build using the command line .

        3
  •  0
  •   K Singh    16 年前

    如果每个dll中都有这么多重复的代码,我建议您使用所有dll通用的代码并创建该代码/函数的dll。然后创建内部调用主dll的其余dll。但是要具有诸如特定命名和构建顺序之类的功能,您需要编写批处理文件。visual studio在项目选项中显示各种命令行参数,这些参数可以帮助您构建项目。

    但是我不知道你要通过创建这么多的dll来满足什么特殊的需求,这将使你很难管理dll本身。如果使用重复代码创建公共dll,我看到的一个好处是:如果更改主代码中的任何内容,只需重新编译一个项目,而不是编译100个项目的100个项目。