asp.net 5.0 project.json中RavenDB.Client引用的问题

我正在尝试使用新的ASP.NET 5.0(又名Asp.Net vNext)构建一个RavenApiController,并且似乎无法让RavenDB.Client引用完全正常工作。

我得到的错误是

错误CS0246找不到类型或命名空间名称’Raven’(您是否缺少using指令或程序集引用?)SharedIO.ASP.NET Core 5.0 RavenApiController.cs 3

我的project.json如下

{ "webroot": "wwwroot", "version": "1.0.0-*", "exclude": [ "wwwroot" ], "packExclude": [ "**.kproj", "**.user", "**.vspscc" ], "dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0-beta2", "Microsoft.AspNet.Diagnostics": "1.0.0-beta2", "Microsoft.AspNet.Mvc": "6.0.0-beta2", "RavenDB.Client": "3.0.3599", "SharedIOModel": "1.0.0-*" }, "frameworks": { "aspnet50": {}, "aspnetcore50": {} } 

}

无法在第三行构建的RavenApiController.cs的代码开头为:

  using System; using Microsoft.AspNet.Mvc; using Raven.Client; using Raven.Client.Document;; namespace SharedIO.Controllers { [RequireHttps] public abstract class RavenAPIController : Controller { public IDocumentStore Store { get { return LazyDocStore.Value; } } 

完全难倒。

因为智能感知似乎能够很好地找到参考,直到我真正构建解决方案之前我才会收到错误。

此外,Intellisense还向我显示(例如)Raven.Client.Document.IDocumentStore在ASP.NET 5.0中是“可用”,但在“ASP.NET Core 5.0”中是“不可用”。

问题是您在project.json中的顶级依赖项节点中引用RavenDB.Client 。 这意味着这些依赖项适用于Desktop CLR( aspnet50 )和CoreCLR( aspnetcore50 )。

构建ASPNET 5项目时,将构建所有配置,而不仅仅是“活动”配置。 大多数情况下, RavenDB.Client仅适用于Desktop CLR,因此请将其移至该配置下的依赖项节点下。

 "dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0-beta2", "Microsoft.AspNet.Diagnostics": "1.0.0-beta2", "Microsoft.AspNet.Mvc": "6.0.0-beta2", "SharedIOModel": "1.0.0-*" }, "frameworks": { "aspnet50": { "dependencies" : { "RavenDB.Client": "3.0.3599", } }, "aspnetcore50": {} } 

然后,您可能必须在代码中使用一些条件块( #if ASPNET50 )或一起删除CoreCLR。