【发布时间】: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