ASP.NET VNext和XDocument

6

我在使用最新版的.NET和Xdocument库时遇到了问题。

我的project.json文件如下:

 "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-beta4",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta4",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta4",
    "System.Xml.XDocument": "4.0.10-beta-23109"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini"
  },

  "frameworks": {
    "dnx451": { }   
  },

我的代码如下:

var xd = XDocument.Parse(str);

但我收到了错误信息:
Severity    Code    Description Project File    Line
Error   CS0433  The type 'XDocument' exists in both 'System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'System.Xml.XDocument, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' WebApplication2.DNX 4.5.1   ValuesController.cs 23

仅使用 System.Xml.Linq.XDocument xd =System.Xml.XDocument xd = 尝试解决它似乎不起作用,我还能尝试什么呢?


尝试删除项目中的bin文件夹。看起来您已经更新了Net库,但代码没有完全重新编译。因此,您会得到一些已编译的代码,查看旧版本和新版本的Net。删除bin将强制所有代码重新编译并指向库的相同版本。这是一个常见的情况,因为编译中的依赖关系无法识别Net版本之间的差异。 - jdweng
1个回答

7

我解决了这个问题,通过将System.Xml.XDocument依赖项作为框架程序集添加(这意味着将使用完整的.Net版本中与GAC安装的那一个)用于dnx451框架,并且只作为NuGet包用于dnxcore框架:

"frameworks": {
  "dnx451": {
    "frameworkAssemblies": { "System.Xml.Linq": "4.0.0.0" }
  },
  "dnxcore50": {
    "dependencies": { "System.Xml.XDocument": "4.0.10" }
  }
}

我认为,在编译 dnx451 版本时,它会混淆 NuGet 包和与完整 .Net Framework 安装一起安装的 dll。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接