簡體   English   中英

在ASP.NET 5(Core)中添加對類庫項目的引用的問題

[英]Issue adding reference to class library project in ASP.NET 5 (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" ]
  }
}

我的global.json文件:

{
  "projects": [
    "src",
    "test",
    "wrap"
  ],
  "sdk": {
    "version": "1.0.0-beta6"
  }
}

這就是我使用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

而已! 我剛剛測試了這個場景。 希望這可以幫助。

如果其他人正在努力解決這個特定錯誤,關鍵是在添加引用時通過“瀏覽”添加引用到實際文件,而不是使用“項目”選項卡。

這似乎不存儲路徑,但按正常方式添加對project.json的引用。 在寫這篇文章時,顯然是一個錯誤(beta7)。

以下是我在ASPT.NET 5 RC 1 Update 1中的做法:

  1. 添加項目引用
  2. 打開project.json ,在"frameworks": node,刪除"dnxcore50": { }行(JSON不允許注釋)。 保存json文件時,應立即刪除DNX Core 5引用。

  3. 建立項目。 它應該成功構建。

  4. "dnxcore50": { }放回去。 它沒有帶回DNX 5 Core。

要在大於4.5.1的版本中添加正常的.NET項目,只需刪除dnxcore並將dnx451重命名為dnx461

這些答案真的幫我解決了這個問題。 在我的情況下,解決方案的“wrap”文件夾中的清理解決了構建錯誤。 我已經重命名了一些類庫,舊的庫仍在那里。 刪除舊項目並更新現有項目中的project.json文件就可以了。 確保project.json文件中的依賴項尊重正確的項目。

這是一個例子:

  "dependencies": {
    "DomainRepository": "1.0.0-*",
    "Domain": "1.0.0-*",
    "DomainContract": "1.0.0-*"
  }

這是一個當前開放的bug。 這是鏈接,因此您可以看到它何時關閉: https//github.com/aspnet/Tooling/issues/245

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM