在ASP.NET 5(Core)中添加对类库项目的引用的问题

Mar*_*rds 17 .net asp.net asp.net-core

嗨首先我知道之前已经提到了类似的问题,但它们现在已经过时了,我使用的是Visual Studio 2015 rtm和ASP.NET 5 beta 6.

我正在尝试将正常(即非vnext)类库项目的引用添加到我的vnext Web应用程序中.如果我按照以下步骤操作:

  1. 创建一个新的Web应用程序项目

  2. 从project.json中删除"dnxcore50"框架

  3. 为普通类库添加新项目

  4. 手动将类库项目移动到/ src文件夹中(否则我收到错误"依赖MyClassLibrary1> = 1.0.0-*无法解析.")

  5. 添加对此类库的引用

现在它构建正常,但如果我尝试添加"使用MyClassLibrary1",它说MyClassLibrary1在当前上下文中不存在.

如果我然后将类库更改为目标.NET 4客户端配置文件(默认情况下为4.6)它可以正常工作,但.NET 4已满或4.5不起作用.我需要它是4.5或更高,因为我需要引用需要它的各种包.理想情况下,一切都只是针对4.6.

这是我的project.json文件:

{
  "webroot": "wwwroot",
  "userSecretsId": "aspnet5-WebApplication2-6767111e-0eba-42a4-9d68-4b6c20767518",
  "version": "1.0.0-*",

  "dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta6",
    "EntityFramework.Commands": "7.0.0-beta6",
    "Microsoft.AspNet.Mvc": "6.0.0-beta6",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Google": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6",
    "Microsoft.Framework.Logging": "1.0.0-beta6",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta6",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta6"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": {
      "dependencies": {
        "MyClassLibrary1": "1.0.0-*"
      }

    }
  },

  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ],
  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

我的global.json文件:

{
  "projects": [
    "src",
    "test",
    "wrap"
  ],
  "sdk": {
    "version": "1.0.0-beta6"
  }
}
Run Code Online (Sandbox Code Playgroud)

mbu*_*nik 23

这就是我使用beta6的方式(UPDATE:它仍然适用于RC1 UPDATE 1).

  1. 从project.json中删除frameworks => dnxcore(无论如何都不能使用完整的.net类库来定位它)
  2. 在目标项目中,右键单击References => Add Reference
  3. 导航并选择要添加的参考dll.

这将为project.json文件添加一个引用条目.在幕后,将dll复制到解决方案中的/ lib目录中,并在/ wrap文件夹中创建仅包含project.json文件的" 包装器项目 ".这里记录了包装器项目(虽然不够好):https://github.com/aspnet/Home/wiki/Project.json-file#bin-syntax-wrapping-a-dll

而已!我刚刚测试了这个场景.希望这可以帮助.


Jam*_*ill 15

如果其他人正在努力解决这个特定错误,关键是在添加引用时通过"浏览"添加引用到实际文件,而不是使用"项目"选项卡.

这似乎不存储路径,但按正常情况添加对project.json的引用.在写这篇文章时,显然是一个错误(beta7).