我有一个包含多个项目的.sln解决方案,所有项目都是针对.NET Framework 4.6的,没有使用.NET Core。现在我添加了一个新的Web项目,使用ASP.NET Core,仍然是针对.NET Framework 4.6。基于PowerShell的构建脚本包括一个NuGet软件包还原,可以像这样调用:
nuget.exe restore $solutionFile -NonInteractive
以下是错误信息:
MSBuild自动检测:使用'C:\Program Files (x86)\MSBuild\14.0\bin'中的msbuild版本“14.0”。C:\GitLabCI\builds\024ca24f\0\team\MyTeam\src\MyWeb\MyWeb.xproj(7,3):错误MSB4019:未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props”。请确保在声明中路径正确,且磁盘上存在该文件。System.Management.Automation.RemoteException
看起来缺少MSBuild的支持文件。然而,我无法安装ASP.NET Core工具,因为它们坚持要求在构建服务器上安装完整的Visual Studio 2015 IDE,这是不合理的,我不想那样做。除框架和构建工具外,所有其他内容都可以以最小的占用空间安装。
如果我省略NuGet包恢复,构建将失败,因为很明显缺少程序集。
如何在没有完整VS IDE的情况下安装ASP.NET Core 1.0 RTM的MSBuild支持?
更新:我从C:\Program Files (x86)\MSBuild\VisualStudio\v14.0复制了两个目录DotNet
和DotNet.Web
到构建服务器。NuGet包恢复就起作用了,但是对于许多项目,构建将以以下错误消息失败:
C:\GitLabCI\builds\024ca24f\0\team\MyTeam\src\Common\Common.csproj : 错误 MSB4057: 项目中不存在目标“_GenerateDependencyFragmentJson”。
大致翻译为“The target '_GenerateDependencyFragmentJson' does not exist in the project.”谷歌甚至都不知道这个单词。
我知道盲目地从一个机器上复制文件到另一个机器上并不是一件好事,我也不指望这种方法可以解决问题。至少它会生成后来的错误消息。
dotnet restore
命令来还原包。 - Tseng