【问题标题】:.NET 4.6.1 project referencing a .NET Standard 2.0 library - VSTS wont build.NET 4.6.1 项目引用 .NET Standard 2.0 库 - VSTS 不会构建
【发布时间】:2018-03-05 12:11:06
【问题描述】:

我在 .NET 4.6.1 项目中引用 .NET Standard 2.0.0 项目。

在本地构建项目可以正常工作。在 VSTS 上使用托管代理构建它会出现以下错误:

“对象”类型是在未引用的程序集中定义的。 您必须添加对程序集 'netstandard, Version=2.0.0.0, 文化=中性,PublicKeyToken=cc7b13ffcd2ddd51'。

按照here 的描述在 Web.config 中添加 netstandard 程序集,没有用,同样的错误:

<system.web> <compilation debug="true" targetFramework="4.6.1" > <assemblies> <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/> </assemblies> </compilation> <httpRuntime targetFramework="4.6.1" />

还尝试添加 NETStandard.Library.NETFramework Nuget 包。遇到很多这样的错误:

CSC:错误 CS1703:具有相同标识的多个程序集具有 已导入: 'D:\a\1\s\packages\NETStandard.Library.NETFramework.2.0.0-preview2-25405-01\build\net461\ref\System.Xml.XmlSerializer.dll' 和 'C:\Program Files ( x86)\参考 程序集\Microsoft\Framework.NETFramework\v4.6.1\Facades\System.Xml.XmlSerializer.dll'。 删除重复引用之一。

使用了 Nuget.org 上最新的 NETStandard.Library.NETFramework 包 - 2.0.0-preview2-25405-01。包装说明说:

此软件包已弃用。使用 .NET Standard 库 .NET Framework VS2017 15.3,只需要.NET Core 2.0 SDK 安装。对于 VS 2015,您需要 NuGet 客户端 3.6 或更高版本。

还尝试为 v. 2.0.0 添加“.NET Core Tool Installer”作为第一个构建步骤。没有运气。

这是我当前的构建配置。如何使其适用于引用 .NET Standard 2.0 库的 .NET 4.6.1 项目?

【问题讨论】:

  • 您的错误消息显示“preview2”。您确定您引用的是正确的(发行版).NET 标准吗?
  • @nvoigt 查看更新的答案
  • 您的解决方案是什么样的?两个项目都是你的吗?还是一个外部 dll?
  • 两个项目都是我的,但standard2.0项目是来自私有nuget存储库的外部dll
  • 您是否尝试过在构建服务器上安装 .NET Core 2.0 SDK,正如已弃用的 NuGet 包上的消息所述?

标签: c# azure-devops


【解决方案1】:

我在网上找到了很多关于安装 NuGet 包、添加 .NET Core 工具、恢复和构建步骤的信息 - 但实际上我最终通过在几个地方更改了一项来解决了这个问题。

你需要ensure your build consistently asks for the right Visual Studio / VSTest version

我有一个包含构建和测试步骤的阶段的构建(以及 NuGet 还原、发布等内容 - 但它们不依赖于任何版本的 Visual Studio)。

在阶段级别,您需要选择“Hosted VS2017”代理队列。

对于构建步骤,您需要将 Visual Studio 版本设置为“Visual Studio 2017”。

对于测试步骤,您需要打开 Advanced Execution Options 并将 VSTest 版本设置为“最新”。

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多