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。