System.Runtime.Serialization.json nuget 包错误 on .网络标准



我在 上发布了一个问题。NetStandard存储库,但他们现在根本不关心12天。所以,我想尝试Stackoverflow。这是我问题的链接。

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

{
"version": "1.0.0-*",
"frameworks": {
"netstandard2.0": {
"dependencies": {
"System.Runtime.Serialization.Xml": "4.3.0",
"System.Runtime.Serialization.Json": "4.3.0"
}
}
}
}

我的代码文件如下:

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

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

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

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

如果使用VS 2017/.NET Core SDK 2.0.0+,则可以获取要生成的正确引用程序集(这些程序集是从NETStandard.Library2.0.0 NuGet 包中提取的 - 如果引用了System.*包,则由 msbuild 逻辑修剪掉)。

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

请注意,在 .NET 标准<2.0 中,DataContractJsonSerializer不是从XmlObjectSerializer继承的 - 这是通过引用的 NuGet 包获取的包(因为你缺少修剪此包并添加正确的 .NET Standard 引用程序集的工具)。

最新更新