编译多个dll

时间:2010-01-01 04:46:26

标签: msbuild

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

最简单的方法是什么?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

无论你使用什么版本的(visual studio ??),我肯定会在命令行中启动它们。最简单的可行方法:

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

请参阅msdn页面,了解如何build using the command line

答案 2 :(得分:0)

如果你在每个dll中有如此多的代码重复,这就是我的建议,采用所有DLL共同的代码并创建该代码/函数的DLL。然后创建内部调用主DLL的其余DLL。但要拥有特定命名和构建顺序等功能,您需要编写批处理文件。项目选项中的Visual Studio显示各种命令行参数,可以帮助您构建项目。

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