![](/img/trans.png)
[英]Could not load file or assembly 'System.ComponentModel.Annotations' in published .Net 4.6.1 project referencing .Net Standard library
[英].NET 4.6.1 project referencing a .NET Standard 2.0 library - VSTS wont build
我在.NET 4.6.1项目中引用了.NET Standard 2.0.0项目。
在本地构建项目效果很好。 在VSTS上使用托管代理进行构建会产生以下错误:
“对象”类型在未引用的程序集中定义。 您必须添加对程序集“ netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51”的引用。
添加在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。 软件包说明中说:
不推荐使用此程序包。 要在VS2017 15.3中使用.NET Framework中的.NET标准库,您只需要安装.NET Core 2.0 SDK。 对于VS 2015,您将需要NuGet客户端3.6或更高版本。
还尝试为2.0.0版添加“ .NET Core Tool Installer”作为第一步。 没运气。
这是我当前的构建配置。 如何使它对引用.NET Standard 2.0库的.NET 4.6.1项目起作用?
我在线上找到了许多有关安装NuGet软件包,添加.NET Core工具,还原和构建步骤的信息-但实际上,最后我通过在几个地方更改一项来解决了该问题。
您需要确保生成的版本始终要求正确的Visual Studio / VSTest版本 。
我有一个带有一个阶段的构建,其中包含一个构建和一个测试步骤(以及诸如NuGet还原,发布之类的东西-但它们不依赖于任何版本的Visual Studio)。
在阶段级别,您需要选择“托管VS2017”代理队列。
对于构建步骤,您需要将Visual Studio版本设置为“ Visual Studio 2017”。
对于测试步骤,您需要打开“高级执行选项”并将VSTest版本设置为“最新”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.