asp.net 5.0 project.json 中 RavenDB.Client 引用的问题
Problems with RavenDB.Client reference in asp.net 5.0 project.json
我正在尝试使用新的 ASP.NET 5.0(又名 Asp.Net vNext)构建一个 RavenApiController,但似乎根本无法使 RavenDB.Client 引用正常工作.
我得到的错误是
Error CS0246 The type or namespace name 'Raven' could not be found (are you missing a using directive or an assembly reference?) 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 中是 'Available',但在 'ASP.NET Core 5.0' 中是 'Not Available'。
问题是您在 project.json
的顶级依赖项节点中引用了 RavenDB.Client
。这意味着这些依赖项适用于 Desktop CLR (aspnet50
) 和 CoreCLR (aspnetcore50
)。
构建 ASPNET 5 项目时,将构建所有配置,而不仅仅是 "active" 一个。大多数情况下 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。
我正在尝试使用新的 ASP.NET 5.0(又名 Asp.Net vNext)构建一个 RavenApiController,但似乎根本无法使 RavenDB.Client 引用正常工作.
我得到的错误是
Error CS0246 The type or namespace name 'Raven' could not be found (are you missing a using directive or an assembly reference?) 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 中是 'Available',但在 'ASP.NET Core 5.0' 中是 'Not Available'。
问题是您在 project.json
的顶级依赖项节点中引用了 RavenDB.Client
。这意味着这些依赖项适用于 Desktop CLR (aspnet50
) 和 CoreCLR (aspnetcore50
)。
构建 ASPNET 5 项目时,将构建所有配置,而不仅仅是 "active" 一个。大多数情况下 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。