.NetStandard上的System.Runtime.Serialization.Json nuget包错误

时间:2017-11-14 04:56:02

标签: .net visual-studio-2015 nuget-package .net-standard

我已在.NetStandard repository发布了一个问题,但他们现在只关心了12天..所以,我想尝试Stackoverflow。这是the link of my issue

我已经开始在Visual Studio 2015中使用.NetCore版本= 1.0.0-preview2-003121。我的project.json文件如下:

using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace NetCoreTests
{
    public class Class1
    {
        public Class1()
        {
            XmlObjectSerializer ser = new DataContractJsonSerializer(typeof(int));
        }
    }
}

我的代码文件如下:

CS0029  Cannot implicitly convert type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' 
to 'System.Runtime.Serialization.XmlObjectSerializer'   NetCoreTests..NETStandard,Version=v2.0

这是我在尝试构建解决方案时遇到的错误:

DataContractJsonSerializer

看起来System.Runtime.Serialization.Json中的XmlObjectSerializer类nuget包不会在System.Runtime.Serialization.Xml nuget包中继承DataContractJsonSerializer类。我可以看到,这两个nuget包之间没有任何依赖关系;但是,如果你检查4。及更高版本的.Net Framework XmlObjectSerializer总是继承自XmlObjectSerializer,因为据我所知,每个DataContractSerializer都继承自{{1}}。即使在此存储库中,此继承也存在: https://github.com/dotnet/standard/blob/master/netstandard/ref/System.Runtime.Serialization.cs#L332

对于这种情况,您能为我提出什么建议?我做错了吗?

1 个答案:

答案 0 :(得分:0)

不要使用基于VS 2015的.NET Core / .NET Standard预览工具来尝试构建.NET Standard 2.0。

如果您使用VS 2017 / .NET Core SDK 2.0.0+,那么您将获得要构建的正确参考程序集(从NETStandard.Library 2.0.0 NuGet程序包中提取 - System.*程序包如果被引用,则由msbuild逻辑修剪掉。)

您的代码示例使用新的.NET Standard 2.0项目,使用实际支持.NET Standard 2.0的工具(VS 2017,CLI 2.0.0)。

请注意,在.NET Standard< 2.0,DataContractJsonSerializer没有从XmlObjectSerializer继承 - 这是你通过引用的NuGet包获得的那个(因为你缺少修剪这个包并添加正确的.NET标准参考组件的工具)。