在构建服务器上使用ASP.NET Core项目构建解决方案

6

我有一个包含多个项目的.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复制了两个目录DotNetDotNet.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
1
我仍然需要进行NuGet还原。解决方案中还有其他的.csproj文件,不仅仅是ASP.NET Core! - ygoe
@ygoe,你找到解决方案了吗? - Nicolas Boisvert
@nboisvert 请看我的回答。 - ygoe
1个回答

0

虽然这可能不是我最初问题的答案,但它是解决问题的(不愉快的)答案。

在构建服务器(代理)上安装完整的Visual Studio 2015。这将提供处理这些项目所需的一切,就像在您的开发机器上一样。它只需要9 GB的磁盘空间和单独的许可证,但是嘿,谁说它会方便呢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接