使用MSBuild的混合DotNet Core/.NET框架构建

使用MSBuild的混合DotNet Core/.NET框架构建,.net,msbuild,.net-core,visual-studio-2017,.net,Msbuild,.net Core,Visual Studio 2017,dotnet msbuild 从sln目录开始工作 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe 从解决方案目录工作 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe 我不希望VS 2017必须安装在生成计算机上,因此我从安

dotnet msbuild

从sln目录开始工作

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
从解决方案目录工作

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
我不希望VS 2017必须安装在生成计算机上,因此我从安装了“Visual Studio 2017生成工具”

轰炸sln中的每个项目,错误如下:

错误MSB4019:未找到导入的项目“C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Sdk\Microsoft.NET.Sdk\Sdk\Sdk.props”。确认声明中的路径正确,并且文件存在于磁盘上

事实上,它不存在于磁盘上。它仅存在于的VS子文件夹中

C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\SDK

我已手动尝试安装.NET 4.6 SDK、.NET Core 1.0 SDK和.NET Core 1.0.1 SDK(x86和x64版本)


是否有任何方法可以使MSBuild正常运行,还是像其他许多方法一样无法修复地损坏?

生成工具安装程序当前不支持.NET核心工作负载。目前,您必须在生成计算机上安装Visual Studio(或者,正如您所注意的,安装.NET Core SDK并调用
dotnet msbuild
,而不是
msbuild.exe


此问题在MSBuild的GitHub存储库中进行了跟踪:。

我现在找到的唯一方法是创建一个编译配置,其中我针对所有.NetCore和.net标准项目,另一个针对所有.net项目(或只使用发布配置)

然后我使用MsBuild两次来构建

MSBuild.exe MySolution.sln/p:Configuration=DotNetCore

MSBuild.exe MySolution.sln/p:Configuration=Release


它适用于VS2017解决方案。

将SDK文件夹从dotnet core安装复制到msbuild tools安装目录

另一个选项是将SDK文件夹从dotnet core安装复制到msbuild tools安装。使用dotnet build也不是一个好选项,因为它不会过滤到特定的sln文件