【问题标题】:Missing include for .NetStandard project when building on build server在构建服务器上构建时缺少 .NetStandard 项目的包含
【发布时间】:2017-08-07 19:34:14
【问题描述】:

我目前正在工作中试用 VS2017,因为有兴趣将我们的服务器系统迁移到 .Net 核心。 我已经将几个小工具项目切换到 .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 文件夹确实存在于我的机器上,但不存在于构建服务器上。

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

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

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

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

添加 dotnet restore 构建步骤修复了此问题,但随后缺少其他命名空间(缺少安装)等等。

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

【问题讨论】:

  • 我遇到了同样的问题。我猜切换到 .csproj 只完成了一半?
  • 我也有同样的问题。复制构建服务器上的 Sdks 文件夹并没有解决问题。安装 .NET Core SDK 也没有解决问题。
  • 相关 github msbuild 问题:github.com/Microsoft/msbuild/issues/1697

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


【解决方案1】:

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

并且,如有必要:

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

【讨论】:

  • .NET Core SDK 已安装。 :)
  • 从 BuildTools 15.3 开始,不再需要设置此变量。这些工具可以直接查找和使用已安装的 SDK。此外,BuildTools 不再包含自己的 SDK 私有版本。
【解决方案2】:

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

  1. 安装 .NET Core SKD from here。

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

    设置 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 以在构建工具的此问题得到修复时收到通知。

【讨论】:

  • 谢谢@TeraTon。这正是我最终要做的。所有手动复制程序集非常烦人。但不管怎样。 ☺️
  • 我现在在 Core 2+ The current .NET SDK does not support targeting .NET Core 2.0. Either target .NET Core 1.1 or lower, or use a version of the .NET SDK that supports .NET Core 2.0987654323@ 上遇到了这个问题
  • 我通过将 SDK 目标从 \dotnet\SDKs 目录复制到 \MSBuild\Sdks 目录来解决了这个错误。然后我还必须确保我在 TeamCity 中使用 NUGet 4+
【解决方案3】:

如果您只对 SDK 项目使用解决方案,那么您只需要使用 dotnet restore && dotnet build 而不是 nuget restore & msbuild。 但如果它混合解决方案(旧项目和 SDK 项目),你将不得不等到 VS15.3 发布

【讨论】:

    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2013-03-11
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多