2015-02-10 122 views
3

我试图用新的ASP.NET 5.0(aka Asp.Net vNext)的东西来构建一个RavenApiController,并且似乎无法得到RavenDB。客户端引用完全可以工作。asp.net 5.0项目RavenDB.Client参考问题project.json

我得到的错误是

错误CS0246类型或命名空间名称“乌鸦”找不到(是否缺少using指令或程序集引用?)SharedIO.ASP.NET核心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似乎能够找到参考就好,我没有得到一个错误,直到我实际上“构建解决方案。

此外Intellisense显示我(例如)Raven.Client.Document.IDocumentStore在ASP.NET 5.0'可用'但'ASP.NET Core 5.0'中'不可用'。

回答

4

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

当你建立一个ASPNET 5项目时,所有的配置都是内置的,而不仅仅是“活动”的。大多数情况下肯定RavenDB.Client只适用于桌面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一起。

+1

哇,工作的一种享受。谢谢。 我最终完全删除了CoreCLR,并将引用保留在“最高”级别,现在它的构建就已经很好了。 让我担心,我并不真正了解aspnet50和aspnetcore50之间的区别,也不知道为什么Raven DB只遵守'Desktop CLR',但是......希望这些谜团随着时间的推移会变得清晰。 ;-) – utunga 2015-02-10 06:39:04

+0

是的,似乎删除'“aspnetcore50”:{}'将是更好的解决方案。 – 2015-02-10 15:53:49

+1

要了解CoreCLR,请查看[本文](http://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net-core-5-and-asp-净-5-内净2015-preview.aspx) – 2015-02-10 16:44:39