Msbuild 在生成服务器上生成时缺少.NetStandard项目的include

Msbuild 在生成服务器上生成时缺少.NetStandard项目的include,msbuild,teamcity,build-server,.net-standard,Msbuild,Teamcity,Build Server,.net Standard,由于对将服务器系统迁移到.Net core的兴趣,我目前正在工作中试用VS2017。 我已经将几个小型工具项目切换到target.netstandard1.2(重新创建和移动文件),所有内容都在本地构建 但是,当我请求在TeamCity 10.0.5服务器上构建时,构建失败,并显示以下消息(项目名称已编辑): E:\TeamCity\buildAgent1\work\467cb2a824afdbda\Source\{PROJECT FOLDER}{PROJECT}.csproj错误MSB4019

由于对将服务器系统迁移到.Net core的兴趣,我目前正在工作中试用VS2017。 我已经将几个小型工具项目切换到target.netstandard1.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)运行程序

我缺少哪套工具/安装程序

更新: 我已经试用了完整的Visual Studio 2017安装程序(社区),包.NET Framework 4.5 Targeting Pack添加了有问题的文件夹。 奇怪,因为服务器上已经安装了4.5多目标包

在将Build agent设置为使用完整的VS2017社区安装后,出现了一系列其他问题,例如在相关项目中找不到系统名称空间

添加dotnet恢复构建步骤修复了此问题,但其他名称空间丢失(缺少安装),等等


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

尝试从这里安装.NET Core SDK:

如有需要,

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

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

  • 安装.NET内核SKD

  • 将MSBuildSDKsPath添加到cmd中的环境变量

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

  • 从本地企业或专业安装的visual studio中,将所需的sdk文件复制到ms build服务器。在本地Visual studio上复制此文件夹的内容:

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

    到生成服务器上的此文件夹:

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

  • 在修复构建工具的此问题时,请遵循以获得通知


  • 如果您仅将解决方案用于SDK项目,那么您所需要的只是使用
    dotnet restore&&dotnet build
    而不是
    nuget restore&msbuild

    但如果它是混合解决方案(旧项目和SDK项目),您将不得不等到VS15.3发布后才能看到同样的问题。我猜转换到.csproj只完成了一半?我有完全相同的问题。复制生成服务器上的SDK文件夹无法解决问题。安装.NET Core SDK也无法解决此问题。相关的github msbuild问题:。已安装NET Core SDK。:)从BuildTools 15.3开始,不再需要设置此变量。这些工具可以直接查找和使用已安装的SDK。此外,BuildTools不再包含自己的SDK私有版本。这正是我最终要做的。所有的手工复制程序集都很烦人。但只要管用。☺️我现在在Core 2+
    中遇到了这个问题,当前的.NET SDK不支持针对.NET Core 2.0。目标为.NET Core 1.1或更低版本,或者使用支持.NET Core 2.0的.NET SDK版本
    我通过将SDK目标从
    \dotnet\SDKs
    目录复制到
    \MSBuild\SDKs
    目录解决了该错误。然后我还必须确保在TeamCity中使用NUGet 4+