dnx不能加载正确的.net库

本文关键字:net 不能 加载 dnx | 更新日期: 2023-09-27 18:06:35

我试图在我的CentOS机器上使用dnx和kestrel运行。net WebApi,并且我得到了很多"类型或名称空间'blah'不存在于名称空间'blahblah'"错误,这暗示,dnx出于某种原因使用了一些旧的程序集,这确实没有定义后者。到目前为止,我已经成功地在同一台机器上使用mono运行了相同的WebApi作为自托管应用程序。它也已经成功地用xbuild编译了,但是到目前为止,用dnx编译它并在kestrtel上托管它还没有成功。这是我第一次使用dnx,我确信,我做错了什么,但谷歌和阅读仍然没有帮助我理解,到底是什么错了。我的项目。Json格式如下:

    {
"webroot": "./",
"dependencies": {
    "Kestrel": "1.0.0-beta5",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
    "Microsoft.AspNet.Hosting": "1.0.0-beta5",
    "Microsoft.AspNet.Mvc": "6.0.0-beta5",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0.0-beta5",
    "System.Net.Http": "4.0.0-beta5",
    "System.Web.Http": "2.0.0",
    "Autofac": "3.5.2",
    "Autofac.WebApi2": "3.4.0",
    "Microsoft.AspNet.Cors": "5.2.3",
    "Microsoft.AspNet.SignalR": "2.2.0",
    "Microsoft.AspNet.SignalR.Core": "2.2.0",
    "Microsoft.AspNet.SignalR.JS": "2.2.0",
    "Microsoft.AspNet.SignalR.SystemWeb": "2.2.0",
    "Microsoft.AspNet.WebApi": "5.2.3",
    "Microsoft.AspNet.WebApi.Client": "5.2.3",
    "Microsoft.AspNet.WebApi.Core": "5.2.3",
    "Microsoft.AspNet.WebApi.WebHost": "5.2.3",
    "Microsoft.Owin": "3.0.1",
    "Microsoft.Owin.Cors": "3.0.1",
    "Microsoft.Owin.Host.SystemWeb": "2.1.0",
    "Microsoft.Owin.Security": "3.0.1",
    "Newtonsoft.Json": "5.0.4"
},
"commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
    "dnx451": {
    }
}}

最大的错误与System.Configuration有关。配置管理器,dnx无法在System中找到。System.Runtime中的配置和类型。缓存,在后一种情况下,dnx根本找不到System.Runtime.Caching。错误还说,我使用的dnx版本是v4.5.1,我想应该理解。net 4.5.1。dnvm list命令显示1.0.0-beta6。我是否需要手动提供必要的文件?如果有,我应该把它们放在哪里?如果这个问题的原因是不同的,会是什么呢?如果有人能解释一下dnx的基础知识,我将不胜感激:即,我在哪里找到它的配置文件,它把包和dll放在哪里,它使用mono,还是它有自己的运行时,它使用什么编译器,我应该获取它的特定版本,等等。

dnx不能加载正确的.net库

您的目标是dnx451框架,它是完整的。net框架SDK。这个框架在CentOS (RedHat克隆对吗?)上不可用,但只有dnxcore。

你的依赖项内部有多个实现,一个用于dnx,一个用于dnxcore。如果你编译到dnx451,依赖将使用dnx451的实现,而dnx451对。net Framework SDK有依赖。如果你要编译成dnxcore,依赖项将使用dnxcore实现,而(可能)不使用System.Configuration.ConfigurationManager。

系统。配置命名空间被重写为。net Core的一部分。

但DNX一如既往:所有测试版,bug无处不在。