我必须为我的项目编译多个dll(大约100个)。 每个项目/构建只有一个不同的源代码文件。 这些dll应该包含一个索引。喜欢calc0023.dll
最简单的方法是什么?
答案 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个项目。