可移植类库与.NET 4.6

时间:2015-08-19 11:35:27

标签: c# visual-studio-2015 datacontract .net-4.6

我刚刚在一个全新的Windows 10副本上拿出了一个全新的Visual Studio 2015副本。我试图创建一个简单的可移植类库(PCL),并试图添加一个简单的数据合同:

namespace ClassLibrary1
{
    using System.Runtime.Serialization;

    [DataContract]
    public class Class1
    {
    }
}

编译器告诉我:

类型或命名空间名称' DataContract'找不到(你是否缺少using指令或程序集引用。当选择.NET 4.6作为目标时,似乎缺少命名空间System.Runtime.Serialization。

当为目标选择.NET Framework 4.6时,似乎没有可用的序列化。如果我回退到.NET 4.5.1,那么相同的代码编译(并在一个更复杂的项目中运行)。这里发生了什么? .NET 4.6还没有为Visual Studio中的Prime Time做好准备吗?还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:6)

这里遇到同样的问题,似乎解决方案是将相关的NuGet包添加到包含已移出Core的功能的项目中。具体来说,您需要Serialization Primitives,但我已经将下面的project.json文件包含在实际配置(依赖项等)方面可能更接近您想要的内容。

This site还有一个"搜索引擎"对于.NET 5软件包,这基本上就是你在这里做的。

{
"supports": {
    "net46.app": {},
    "uwp.10.0.app": {},
    "dnxcore50.app": {}
  },
  "dependencies": {
    "Microsoft.NETCore": "5.0.0",
    "Microsoft.NETCore.Portable.Compatibility": "1.0.0",
    "System.Collections": "4.0.10",
    "System.Collections.Specialized": "4.0.0",
    "System.Linq": "4.0.0",
    "System.Linq.Expressions": "4.0.10",
    "System.Linq.Queryable": "4.0.0",
    "System.Net.Requests": "4.0.10",
    "System.Runtime": "4.0.20",
    "System.Runtime.Serialization.Primitives": "4.0.10",
    "System.Runtime.Serialization.Json": "4.0.0",
    "System.Runtime.Serialization.Xml": "4.0.10"
  },
  "frameworks": {
    "dotnet": {
      "imports": "portable-net452+win81"
    }
  }
}