使用MSBuild编译MonoDevelop源码时遇MSB1001未知开关错误求助
解决VS2017编译MonoDevelop时MSB1001未知开关错误
这个问题的根源很明确:你使用的Visual Studio 2017配套的MSBuild 15.x版本不支持/bl(二进制日志)参数,这个开关是MSBuild 16.0及以后(对应Visual Studio 2019及更高版本)才新增的功能,所以winbuild.bat里的/bl:MonoDevelop.binlog会被识别为未知开关,导致报错。
下面给你两个可行的解决方案:
方案一:修改winbuild.bat移除不兼容参数
直接修改winbuild.bat中的报错行,删掉/bl:MonoDevelop.binlog部分即可:
"%MSBUILD_EXE%" Main.sln /m "/p:Configuration=%CONFIG%" "/p:Platform=%PLATFORM%" %* || goto :error
修改后运行脚本,VS2017的MSBuild就能正常编译了,只是不会生成二进制日志文件。如果需要日志,你可以替换成MSBuild 15.x支持的文本日志参数/fl:MonoDevelop.log,修改后如下:
"%MSBUILD_EXE%" Main.sln /fl:MonoDevelop.log /m "/p:Configuration=%CONFIG%" "/p:Platform=%PLATFORM%" %* || goto :error
方案二:升级到Visual Studio 2019或更高版本
如果你需要保留二进制日志的功能(二进制日志比文本日志更详细,便于排查复杂编译问题),建议升级到Visual Studio 2019或更高版本。升级后,配套的MSBuild 16.x+会原生支持/bl参数,直接运行原winbuild.bat脚本即可正常编译。
内容的提问来源于stack exchange,提问作者Aj_
相关产品推荐
相关产品推荐

