Windows平台的通用Build工具:MSBuild

MSBuild作为Windows平台上的通用Build工具,不仅适用于.NET项目,还可以用于如Delphi和C++Builder等非.NET项目。它通过XML定义Build流程,为大型项目提供灵活的Build方案,并能显著减少Build时间。
部署运行你感兴趣的模型镜像
Windows平台的通用Build工具MSBuild

我想一些朋友已经知道或是使用MicrosoftMSBuildBuild应用程序,如果您还没有听过MSBuild是什么,那么您可以在:

http://msdn2.microsoft.com/en-us/library/wea2sca5.aspx

找到有关MSBuild的信息。

MSBuild内付于.Net Framework 2.0中,VS Studio 2005使用的Build就是MSBuildMSBuild类似于JavaAnt或是.NET移植版本NAnt,都允许开发人员撰写XML文件来指定Build的流程。不过MSBuildAnt/NAnt不太一样的地方是,MSBuild比较偏向传统的Make工具,但是MSBuild改正了许多传统Make工具的缺点。由于MSBuild在网络上有许多的信息,因此,我在这里并不是讨论MSBuild的技术面,而是想谈谈MSBuild有趣的地方。

MSBuildVS Studio中应该是作为C#/VB.NET等项目的Build工具(应该是因为我没有VS Studio 2005),因此,MSBuild主要是作为.NET程序语言项目的Build工具。但是MSBuild在理论上应该是可以作为Windows平台上通用的Build工具,而不只限于.NET程序语言项目。这当然是因为MSBuild允许开发人员使用XML撰写Build流程,此外,MSBuild也允许开发人员调用外部工具。因此,MSBuild也应该可以让Win32的开发工具用来作为通用的Build工具,例如DelphiC++Builder,甚至是PHP等。

那么使用MSBuild作为Build工具有什么好处? 比如说DelphiC++Builder都有自己的Build工具,那为什么还要使用MSBuild? 其实一个非常简单的答案就是Delphi For Win32C++BuilderDelphi.NETC#Builder以及未来的Delphi For Win64等就可以提供一个通用的Build机制和Build工具。

另外一个原因则非常重要,由于MSBuild允许开发人员使用XML撰写/定义Build流程,因此对于大型、复杂的项目而言,这允许开发工具借助MSBuild提供更为弹性的Build流程,更重要的是MSBuild允许开发人员拆解Build流程,让复杂项目中相同的部分可以执行相同的Build工作,或是在不同的项目中共享相同的Build流程。如果好好利用这个特点,那么开发人员在Build复杂项目时可以大幅减少需要的Build时间,或是对于像C++这样需要两到三个Pass的编译器而言,这可以大幅减少编译、连接等Build的时间。例如在笔者自行测试的案例中,笔者把以前许多C++Builder的项目重新使用MSBuild来重新Build,结果是使用MSBuild比以前节省了将近50%的时间,这大大说明了善用MSBuild的好处。

那么CodeGear在未来会如何善用MSBuild?我相信各位很快就会知道了。

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

LogUObjectHash: Compacting FUObjectHashTables data took 0.87ms LogTurnkeySupport: Project requires temp target (已启用VaRest插件) LogLauncherProfile: Unable to use promoted target - D:/meikuang5.4/Binaries/Win64/UnrealGame.target does not exist. LogMonitoredProcess: Running Serialized UAT: [ cmd.exe /c ""E:/UE_5.4/Engine/Build/BatchFiles/RunUAT.bat" -ScriptsForProject="D:/meikuang5.4/煤矿变电站.uproject" Turnkey -command=VerifySdk -platform=Win64 -UpdateIfNeeded -EditorIO -EditorIOPort=59426 -project="D:/meikuang5.4/煤矿变电站.uproject" BuildCookRun -nop4 -utf8output -nocompileeditor -skipbuildeditor -cook -project="D:/meikuang5.4/煤矿变电站.uproject" -unrealexe="E:\UE_5.4\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" -platform=Win64 -installed -stage -archive -package -build -clean -pak -iostore -compressed -archivedirectory="D:/meikuangdabao" -c lientconfig=Development" -nocompile -nocompileuat ] UATHelper: 打包 (Windows): Running AutomationTool... UATHelper: 打包 (Windows): Using bundled DotNet SDK version: 6.0.302 UATHelper: 打包 (Windows): Starting AutomationTool... UATHelper: 打包 (Windows): Parsing command line: -ScriptsForProject=D:/meikuang5.4/ú?????.uproject Turnkey -command=VerifySdk -platform=Win64 -UpdateIfNeeded -EditorIO -EditorIOPort=59426 -project=D:/meikuang5.4/ú?????.uproject BuildCookRun -nop4 -utf8output -nocompileeditor -skipbuildeditor -cook -project=D:/meikuang5.4/ú?????.uproject -unrealexe=E:\UE_5.4\Engine\Binaries\Win64\UnrealEditor-Cmd.exe -platform=Win64 -installed -stage -archive -package -build -clean -pak -iostore -compressed -archivedirectory=D:/meikuangdabao -clientconfig=Development -nocompile -nocompileuat UATHelper: 打包 (Windows): Initializing script modules... UATHelper: 打包 (Windows): Total script module initialization time: 0.98 s. UATHelper: 打包 (Windows): Using C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe UATHelper: 打包 (Windows): Executing commands... UATHelper: 打包 (Windows): Installed Sdk validity: UATHelper: 打包 (Windows): Win64: (Status=Valid, MinAllowed_Sdk=10.0.18362.0, MaxAllowed_Sdk=10.9.99999.0, Current_Sdk=10.0.26100.0, Allowed_AutoSdk=10.0.19041.0, Current_AutoSdk=, Flags="InstalledSdk_ValidVersionExists") UATHelper: 打包 (Windows): Scanning for envvar changes... UATHelper: 打包 (Windows): ... done! UATHelper: 打包 (Windows): Cleaning Temp Paths... UATHelper: 打包 (Windows): BUILD SUCCESSFUL UATHelper: 打包 (Windows): Setting up ProjectParams for D:\meikuang5.4\煤矿变电站.uproject UATHelper: 打包 (Windows): ********** BUILD COMMAND STARTED ********** UATHelper: 打包 (Windows): Running: E:\UE_5.4\Engine\Binaries\ThirdParty\DotNet\6.0.302\windows\dotnet.exe "E:\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" 煤矿变电站 Win64 Development -Project="D:\meikuang5.4\煤矿变电站.uproject" -Clean -NoHotReload "D:\meikuang5.4\煤矿变电站.uproject" -NoUBTMakefiles -remoteini="D:\meikuang5.4" -skipdeploy -log="C:\Users\PC\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+UE_5.4\UBA-煤矿变电站-Win64-Development.txt" UATHelper: 打包 (Windows): Log file: C:\Users\PC\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+UE_5.4\UBA-ú����վ-Win64-Development.txt UATHelper: 打包 (Windows): Cleaning ú����վ binaries... UATHelper: 打包 (Windows): Available x64 toolchains (1): UATHelper: 打包 (Windows): * C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207 UATHelper: 打包 (Windows): (Family=14.44.35207, FamilyRank=5, Version=14.44.35219, Is64Bit=True, ReleaseChannel=Latest, Architecture=x64) UATHelper: 打包 (Windows): Unavailable x64 toolchains (1): UATHelper: 打包 (Windows): * C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.29.30133 UATHelper: 打包 (Windows): (Family=14.29.30133, FamilyRank=5, Version=14.29.30159, Is64Bit=True, ReleaseChannel=Latest, Architecture=x64, Error="UnrealBuildTool requires at minimum the MSVC 14.34.31933 toolchain. Please install a later toolchain such as 14.38.33130 from the Visual Studio installer.") UATHelper: 打包 (Windows): Visual Studio 2022 compiler version 14.44.35219 is not a preferred version. Please use the latest preferred version 14.38.33130 UATHelper: 打包 (Windows): Took 4.01s to run dotnet.exe, ExitCode=0 UATHelper: 打包 (Windows): Running: E:\UE_5.4\Engine\Binaries\ThirdParty\DotNet\6.0.302\windows\dotnet.exe "E:\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" 煤矿变电站 Win64 Development -Project=D:\meikuang5.4\煤矿变电站.uproject -Manifest=D:\meikuang5.4\Intermediate\Build\Manifest.xml -remoteini="D:\meikuang5.4" -skipdeploy -log="C:\Users\PC\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+UE_5.4\UBA-煤矿变电站-Win64-Development_2.txt" UATHelper: 打包 (Windows): Log file: C:\Users\PC\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+UE_5.4\UBA-ú����վ-Win64-Development_2.txt UATHelper: 打包 (Windows): Creating makefile for ú����վ (no existing makefile) UATHelper: 打包 (Windows): Available x64 toolchains (1): UATHelper: 打包 (Windows): * C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207 UATHelper: 打包 (Windows): (Family=14.44.35207, FamilyRank=5, Version=14.44.35219, Is64Bit=True, ReleaseChannel=Latest, Architecture=x64) UATHelper: 打包 (Windows): Unavailable x64 toolchains (1): UATHelper: 打包 (Windows): * C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.29.30133 UATHelper: 打包 (Windows): (Family=14.29.30133, FamilyRank=5, Version=14.29.30159, Is64Bit=True, ReleaseChannel=Latest, Architecture=x64, Error="UnrealBuildTool requires at minimum the MSVC 14.34.31933 toolchain. Please install a later toolchain such as 14.38.33130 from the Visual Studio installer.") UATHelper: 打包 (Windows): Visual Studio 2022 compiler version 14.44.35219 is not a preferred version. Please use the latest preferred version 14.38.33130 UATHelper: 打包 (Windows): Available x64 toolchains (1): UATHelper: 打包 (Windows): * C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207 UATHelper: 打包 (Windows): (Family=14.44.35207, FamilyRank=5, Version=14.44.35219, Is64Bit=True, ReleaseChannel=Latest, Architecture=x64) UATHelper: 打包 (Windows): Unavailable x64 toolchains (1): UATHelper: 打包 (Windows): * C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.29.30133 UATHelper: 打包 (Windows): (Family=14.29.30133, FamilyRank=5, Version=14.29.30159, Is64Bit=True, ReleaseChannel=Latest, Architecture=x64, Error="UnrealBuildTool requires at minimum the MSVC 14.34.31933 toolchain. Please install a later toolchain such as 14.38.33130 from the Visual Studio installer.") UATHelper: 打包 (Windows): Visual Studio 2022 compiler version 14.44.35219 is not a preferred version. Please use the latest preferred version 14.38.33130 UATHelper: 打包 (Windows): Writing manifest to D:\meikuang5.4\Intermediate\Build\Manifest.xml UATHelper: 打包 (Windows): Building ú����վ... UATHelper: 打包 (Windows): Using Visual Studio 2022 14.44.35219 toolchain (C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207) and Windows 10.0.26100.0 SDK (C:\Program Files (x86)\Windows Kits\10). UATHelper: 打包 (Windows): Warning: Visual Studio 2022 compiler is not a preferred version UATHelper: 打包 (Windows): [Adaptive Build] Excluded from ú����վ unity file: ú����վ.cpp PackagingResults: Warning: Visual Studio 2022 compiler is not a preferred version UATHelper: 打包 (Windows): Determining max actions to execute in parallel (6 physical cores, 12 logical cores) UATHelper: 打包 (Windows): Executing up to 6 processes, one per physical core UATHelper: 打包 (Windows): Using Parallel executor to run 5 action(s) UATHelper: 打包 (Windows): ------ Building 5 action(s) started ------ UATHelper: 打包 (Windows): [1/5] Resource Default.rc2 UATHelper: 打包 (Windows): [2/5] Compile [x64] SharedPCH.Core.Project.ValApi.Cpp20.cpp UATHelper: 打包 (Windows): c1xx: fatal error C1083: �޷��򿪱������м��ļ�: ��D:\meikuang5.4\Intermediate\Build\Win64\x64\煤矿变电站\Development\Core\SharedPCH.Core.Project.ValApi.Cpp20.h.pch��: No such file or directory UATHelper: 打包 (Windows): Total time in Parallel executor: 0.50 seconds UATHelper: 打包 (Windows): Total execution time: 29.83 seconds UATHelper: 打包 (Windows): Took 30.13s to run dotnet.exe, ExitCode=6 UATHelper: 打包 (Windows): UnrealBuildTool failed. See log for more details. (C:\Users\PC\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+UE_5.4\UBA-煤矿变电站-Win64-Development_2.txt) UATHelper: 打包 (Windows): AutomationTool executed for 0h 0m 53s UATHelper: 打包 (Windows): AutomationTool exiting with ExitCode=6 (6) UATHelper: 打包 (Windows): BUILD FAILED PackagingResults: Error: Unknown Error
最新发布
10-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值