【问题标题】:Use local class library as resource for Web API (ASP.NET Core 1.0)使用本地类库作为 Web API (ASP.NET Core 1.0) 的资源
【发布时间】:2016-08-04 13:21:05
【问题描述】:

我遇到了一个非常简单的问题。

我想加载本地 .NET 4 类库 (dll) 项目以用作我的新 ASP.NET Web API 项目中的资源(第一次尝试 asp.net)

我熟悉 Winforms 应用程序,现在尝试创建一个 ASP.NET Web API,以便能够从 PHP/linux 服务器访问我的一个帮助程序 DLL。我不确定这是否是一个好方法,但我试图阻止在 PHP 代码中重新实现 DLL 的逻辑。

现在的问题是我无法将 DLL 或库类项目添加到 Web API 项目的资源中。

在尝试解决我尝试过的问题时:

  1. Visual Studio 2015 新项目->ASP.NET Web 应用程序->ASP.NET Core 1.0 模板->Web API
  2. 为 Web API 解决方案创建新的类库项目(或导入现有项目)
  3. 将项目添加到 Web API 项目参考中
  4. 将类库命名空间的 using 指令添加到控制器
  5. 尝试构建却报错:

错误 CS0246 找不到类型或命名空间名称“ClassLibrary1”(您是否缺少 using 指令或程序集引用?)WebApplication1.DNX Core 5.0

对我来说,它似乎正试图从 nuget 或其他东西中获取资源。

我希望有人可以轻松地指出我的错误,以便我可以继续进行实际工作。 (或者我只是想念使用 Web API 的概念?)

项目.json

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
  },

  "frameworks": {
    "dnx451": {
      "dependencies": {
        "ClassLibraryTest2": "1.0.0-*"
      }
    },
    "dnxcore50": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

【问题讨论】:

  • 您是否尝试使用文件 > 现有项目将库添加到您的解决方案中?然后在你的 webapi 项目中添加对它的引用?
  • 我也曾尝试过这种方式,但同样失败了。因此,我尝试消除所有其他错误来源,因此我将创建新的库类项目交给了 web api,同样的原因将其用作问题的示例。
  • 也许您可以设置本地 NuGet 提要,并通过该 nuget 提要安装参考。教程在这里:docs.nuget.org/create/hosting-your-own-nuget-feeds
  • 等等,我想我发现了你的问题哈哈。你可以删除 dnxcore50 部分吗?我忽略了它。这部分意味着它正在尝试针对最新版本的 dnx 编译库,如果您依赖特定于框架的代码,则会失败。
  • @Repeat Spacer dnxcore50 的东西仍处于 RC 状态,最终版本尚未公布。所以也许你暂时可以不用它。

标签: dll asp.net-web-api asp.net-core class-library


【解决方案1】:

无需删除 dnxcore50 部分。

只需从 dnx451 中删除 "ClassLibraryTest2": "1.0.0-*" 并将依赖项添加到全局依赖项列表中即可。它将应用于 dnx451 和 dnxcore50。

project.json 看起来像这样:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "ClassLibraryTest2": "1.0.0-*"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
  },

  "frameworks": {
    "dnx451": {
      "dependencies": {            
      }
    },
    "dnxcore50": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

【讨论】:

  • 感谢您的建议。将依赖项移到那里会给我其他错误:“错误 NU1002 WebApplicationTest2 项目中的依赖项 ClassLibraryTest2 1.0.0 不支持框架 DNXCore,Version=v5.0。” (类库现在是 .NET 4,但我也尝试过更高的版本,但同样的错误)
  • 我还尝试从框架中删除“dnxcore50”:{},然后它会构建,但仍然在尝试在控制器中使用 ClassLibrary 时出现错误“错误 CS0246 类型或命名空间名称 'ClassLibraryTest2'找不到(您是否缺少 using 指令或程序集引用?)"
  • 现在,如果我删除 dnxcore50 并将 ClassLibrary 目标更改为 .Net 4.5.1,它就可以工作,并且依赖项是在 dnx451 还是在全局依赖项中实际上并不重要。 (但那样我就不能使用 .Net 4 ClassLibrary 并且我失去了 dnxcore50 依赖项)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 2015-08-17
  • 1970-01-01
  • 2022-01-22
  • 2020-11-23
  • 2020-07-11
相关资源
最近更新 更多