在构建服务器上构建时,缺少包含.NetStandard项目

时间:2017-03-16 14:42:52

标签: msbuild teamcity build-server .net-standard

由于有兴趣将我们的服务器系统迁移到.Net核心,我目前正在尝试VS2017。 我已经切换了几个小工具项目来定位.NetStandard 1.2(重新创建和移动文件),一切都在本地构建。

但是,当我在TeamCity 10.0.5服务器上请求构建时,构建失败并显示以下消息(项目名称已编辑):

  

E:\ TeamCity \ buildAgent1 \ work \ 467cb2a824afdbda \ Source \ {PROJECT FOLDER} \ {PROJECT} .csproj错误MSB4019:导入的项目“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \找不到MSBuild \ Sdks \ Microsoft.NET.Sdk \ Sdk \ Sdk.props。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。

Microsoft.NET.Sdk 文件夹确实存在于我的计算机上,但不存在于构建服务器上。

我已经为Visual Studio 2017安装了构建工具,并安装了 .Net Core 1.1 SDK ,构建配置使用了VS2017的Visual Studio(sln)运行器。

我缺少哪些工具/安装程序?

更新 我已尝试使用Full Visual Studio 2017安装程序(社区),并且包 .NET Framework 4.5 Targeting Pack 添加了相关文件夹。 奇怪,因为服务器上已经安装了4.5多目标包。

在设置Build代理以使用完整的VS2017社区安装后,出现了许多其他问题,例如在相关项目中找不到 System 命名空间。

添加 dotnet restore 构建步骤解决了此问题,但其他名称空间缺失(缺少安装),等等。

使用.NETStandard项目构建完整的框架解决方案似乎依赖于.NET Core来构建,我不明白,因为我不是针对.NET Core。

3 个答案:

答案 0 :(得分:9)

尝试从此处安装.NET Core SDK: .NET Core Downloads

并且,如有必要:

set MSBuildSDKsPath=C:\Program Files\dotnet\sdk\1.0.1\Sdks

答案 1 :(得分:5)

我通过安装.NET Core SDK并添加MSBuildSDKsPath解决了这个问题。我还将不同的SDK从本地安装的visual studio复制到构建服务器。截至目前,您必须在服务器上安装完整的Visual Studio安装,以便在没有这些权宜之计修复的情况下使构建工作。

  1. 安装.NET Core SKD from here

  2. 将MSBuildSDKsPath添加到cmd中的环境变量。

    设置MSBuildSDKsPath = C:\ Program Files \ dotnet \ sdk \ 1.0.1 \ Sdks

  3. 从您当地的企业或Visual Studio的专业安装中,将所需的sdk文件复制到您的ms构建服务器。在本地Visual Studio上复制此文件夹的内容:

    C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Sdks

    到构建服务器上的此文件夹:

    C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Sdks

  4. 如果修复了构建工具的此问题,请按ticket for this bug in github获取通知。

答案 2 :(得分:1)

如果您只使用SDK项目的解决方案,那么您所需要的就是使用dotnet restore && dotnet build而不是nuget restore & msbuild。 但如果它混合了解决方案(旧项目和SDK项目),则必须等到VS15.3发布