2015-02-10 67 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