如何使用msbuild从命令行编译我的c#解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用msbuild从命令行编译我的c#解决方案相关的知识,希望对你有一定的参考价值。

我有一个c#解决方案(开源,可在这里找到:https://github.com/tzachshabtay/MonoAGS),我可以从Visual Studio 2017(Dot net framework)和VS for Mac(Mono)编译。我也可以在Linux和mac(https://github.com/tzachshabtay/MonoAGS/blob/master/.travis.yml)上成功地在Travis CI上使用msbuild编译它。

我不能做的是在我的本地机器上从Windows 10在命令行上编译它。我希望能够为DotNet Framework和Mono编译它。所以我尝试从单声道安装和Build Tools for Visual Studio 2017使用MSBuild(注意:我希望能够在Windows上安装,即使没有安装vs2017,虽然在本地机器上安装了vs2017,但不知道是否重要) 。这两个安装都是针对今天的最新版本。

这是我在单声道上从msbuild获得的错误(PATH设置为%programfiles(x86)%Monoin):

项目“C: Github MonoAGS MonoAGS.sln”(1)在节点1(默认目标)上构建“C: Github MonoAGS Source Tests Tests.csproj”(2)。项目“C: Github MonoAGS Source Tests Tests.csproj”(2)在节点1上构建“C: Github MonoAGS Source AGS.API AGS.API.csproj”(3)(GetTargetFrameworks目标(一个或多个))。 C: Program Files dotnet sdk 2.1.4 Sdks Microsoft.NET.Sdk Sdk Sdk.props(29,11):错误MSB4226:导入的项目“C: Program Files(x86) MSBuild 15.0 Microsoft.Common.props“未找到。另外,尝试在$(MSBuildExtensionsPath) - “C: Program Files(x86) MSBuild”的后备搜索路径中找到“15.0 Microsoft.Common.prop s”。这些搜索路径在“C: Program Files Mono lib mono msbuild 15.0 bin MSBuild.dll.config”中定义。确认声明中的路径是正确的,并且该文件存在于其中一个搜索路径的磁盘上。 [C: Github上 MonoAGS 源 AGS。 API AGS.API.csproj]

这是我从构建工具从msbuild获得的错误(PATH设置为%programfiles(x86)%Microsoft Visual Studio2017BuildToolsMSBuild15.0Bin):

项目“C: Github MonoAGS Source Tests Tests.csproj”(2)在节点1上构建“C: Github MonoAGS Source AGS.API AGS.API.csproj”(3)(GetTargetFrameworks目标(一个或多个))。 C: Github MonoAGS Source AGS.API AGS.API.csproj:错误MSB4247:无法加载SDK解析器。存在清单文件,但找不到SDK解析程序DLL文件的路径。清单文件路径'C: Program Files(x86) Microsoft Visual Studio 2017 BuildTools MSBuild 15.0 Bin SdkResolvers Microsoft.Build.NuGet SdkResolver Microsoft.Build.NuGetSdkResolver.xml'。 SDK解析器路径:C: Program Files(x86) Microsoft Visual Studio 2017 BuildTools Common7 IDE CommonExtens ions Microsoft NuGet Microsoft.Build.NuGetSdkResolver.dll

至于单声道错误,MSBuild15.0文件夹存在,但Microsoft.Common.props不存在(我无法在该机器上的任何其他位置找到它)。

至于构建工具错误,CommonExtensions文件夹存在,但其中没有Microsoft文件夹。

我正在尝试的命令是:msbuild /p:Configuration=DEBUG /p:Platform="Any CPU" MonoAGS.sln

为什么不起作用?我错过了什么?谢谢。

答案

如何使用msbuild从命令行编译我的c#解决方案

对于构建工具错误,您应该通过Visual Studio Installer安装组件NuGet包管理器:

enter image description here

当我们使用Visual Studio构建工具来构建项目时,我们还需要为项目安装一些必要的组件。

对于单声道错误,由于我没有单声道ENV,我无法指定该错误的直接原因,如果可能,您可以尝试安装Mono framework。如果没有帮助,您可以使用mono和msbuild标签打开一个新线程。

更新:

如何使用命令行,btw(用于设置脚本)安装它?

是的,您可以使用vs_buildtools.exe来安装该组件ID Microsoft.VisualStudio.Component.NuGet:

vs_buildtools.exe --add Microsoft.VisualStudio.Component.NuGet --quiet

注意:您应该将vs_buildtools__2048890300.15156xxxx.exe重命名为vs_buildtools.exe,然后使用vs_buildtools.exe进行安装。

查看Visual Studio Build Tools 2017 component directoryUse command-line parameters to install Visual Studio 2017了解更多详情。

希望这可以帮助。

以上是关于如何使用msbuild从命令行编译我的c#解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何使用命令行msbuild部署VS2012网站项目而不进行预编译?

从命令行编译 C# 7.2 项目

您可以从 msbuild.exe 命令行关闭条件编译符号吗?

使用devenv/MSBuild在命令行编译sln或csproj

如何在命令行中编译和链接项目?

如何从正在处理的项目文件中访问 msbuild 命令行参数?