MSBuild 命令行 并行编译项目,出现生成dll文件占用

1.编译工具版本VS2015 

使用VS 2015,装完VS 2015 是不包含MSBuild 需要下载安装 mu_microsoft_build_tools_2015_x86_x64_6846132.exe(Microsoft Build Tools 2015)

2.项目结构

这里要注意,其他项目里引用Common项目的,是通过dll文件夹里的Common.dll,这是导致并行编译的原因

 3.编译脚本

compile.bat

set msbuild_program_dir=C:\Program Files (x86)\MSBuild\14.0\Bin\
set compile_model=Release
set sln_file_dir=.\Test.sln
set message="Compiling WPF"

Echo %message%
"%msbuild_program_dir%\MSbuild.exe"  /maxcpucount /p:Configuration=%compile_model% %sln_file_dir%'

set message="completed."
Echo %message%

注意上面的 /maxcpucount,这个并行编译,同时编译多个项目的设置参数

4.导致出现的警告

_CopyAppConfigFile:
     [exec]          正在将文件从“app.config”复制到“dll文件夹\Common.dll.config”。
     [exec]        CopyFilesToOutputDirectory:
     [exec]          正在将文件从“obj\Release\Common.dll”复制到“dll文件夹\Common.dll”。
     [exec]      2>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(3813,5): warning MSB3026: 未能将“obj\Release\Common.dll”复制到“dll文件夹\Common.dll”。1000 毫秒后将开始第 1 次重试。文件“dll文件夹\Common.dll”正由另一进程使用,因此该进程无法访问此文件。 [D:\Test\Common\Common.csproj]

5./maxcpucount 参数解释

指定生成时要使用的最大并发进程数。 如果不包含此开关,则默认值为 1。 如果包含此开关而没有指定值,MSBuild 将使用计算机中的处理器总数作为其值

如:

MSbuild.exe test.csproj /maxcpucount:3 表示使用三个 MSBuild 进程进行生成,这允许同时生成三个项目,编译时,会在任务管理器里出现在运行的 MSBuild.exe

MSbuild.exe test.csproj /maxcpucount 表示将使用计算机中的处理器总数作为其值

更多详情用 MSBuild 并行生成多个项目

6.解决方案

1>引用Common.dll 的项目改成 引用Common项目,即 dll引用改成对应的 项目引用

2>去掉 /maxcpucount 编译参数或者 设置/maxcpucount:1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
命令行生成 DLL 文件需要使用 Visual Studio 中的工具集和命令行编译器。以下是生成 DLL 文件的大致步骤: 1. 打开命令提示符或 PowerShell。 2. 导航到包含项目文件的目录。 3. 使用以下命令打开 Visual Studio 开发人员命令提示符,以便设置开发环境: ``` "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" ``` 这是针对 Visual Studio Community 2019 的路径,如果您使用的是其他版本,可能需要相应更改路径。 4. 使用以下命令创建项目的解决方案文件: ``` msbuild /t:Rebuild /p:Configuration=Release YourProject.sln ``` 其中,“YourProject.sln”是您的项目解决方案文件的名称。 5. 使用以下命令创建 DLL 文件: ``` cl /LD /Ox /EHsc /MD /I"path\to\header\files" /Fo"path\to\output\directory" /Fe"path\to\output\directory\YourDLL.dll" "path\to\source\files\*.cpp" ``` 其中,“/LD”选项告诉编译生成 DLL 文件。“/Ox”选项启用代码优化。“/EHsc”选项启用 C++ 异常处理。“/MD”选项指定使用 DLL 运行时库。“/I”选项指定头文件的包含目录。“/Fo”选项指定生成的.obj 文件的输出目录。“/Fe”选项指定生成DLL 文件的输出路径。“*.cpp”通配符指定要编译的源文件。 以上命令中的路径和文件名应根据您的项目进行相应更改。 6. 成功生成 DLL 文件后,可以在其他应用程序中使用它。记得将 DLL 文件和头文件复制到相应的目录中,并在应用程序中链接库文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值