嗨首先我知道之前已经提到了类似的问题,但它们现在已经过时了,我使用的是Visual Studio 2015 rtm和ASP.NET 5 beta 6 .
我正在尝试将正常(即非vnext)类库项目的引用添加到我的vnext Web应用程序中 . 如果我按照以下步骤操作:
-
创建一个新的Web应用程序项目
-
从project.json中删除“dnxcore50”框架
-
为普通类库添加新项目
-
手动将类库项目移动到/ src文件夹中(否则我收到错误“依赖MyClassLibrary1> = 1.0.0- *无法解析 . ”)
-
添加对此类库的引用
现在它构建正常,但如果我尝试添加“使用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"
}
}
6 回答
这就是我使用beta6( UPDATE: It's still valid for the RC1 UPDATE 1 )的方式 .
从project.json中删除frameworks => dnxcore(无论如何都不能使用完整的.net类库来定位它)
在目标项目中,右键单击References => Add Reference
导航并选择要添加的参考dll .
这将为 project.json 文件添加引用条目 . 在幕后,将dll复制到解决方案中的/ lib目录,并在/ wrap文件夹中创建只有project.json文件的“ wrapper project ” . 这里记录了包装器项目(尽管不够好):https://github.com/aspnet/Home/wiki/Project.json-file#bin-syntax-wrapping-a-dll
而已!我刚刚测试了这个场景 . 希望这可以帮助 .
如果其他人正在努力解决这个特定错误,关键是在添加引用时通过“浏览”添加引用到实际文件,而不是使用“项目”选项卡 .
这似乎不存储路径,但按正常情况添加对project.json的引用 . 在写这篇文章时,显然是一个错误(beta7) .
以下是我在ASPT.NET 5 RC 1 Update 1中的做法:
添加项目参考
打开
project.json
,在"frameworks":
节点内,删除"dnxcore50": { }
行(JSON不允许注释) . 保存json文件时,应立即删除DNX Core 5
引用 .构建项目 . 它应该成功构建 .
把
"dnxcore50": { }
放回去 . 它没有带回DNX 5 Core .要在大于4.5.1的版本中添加正常的.NET项目,只需删除dnxcore并将dnx451重命名为dnx461
这些答案真的帮我解决了这个问题 . 在我的情况下,解决方案的“wrap”文件夹中的清理解决了构建错误 . 我已经重命名了一些类库,旧的库仍在那里 . 删除旧项目并更新现有项目中的project.json文件就可以了 . 确保project.json文件中的依赖项尊重正确的项目 .
这是一个例子:
这是一个当前开放的bug . 这是链接,因此您可以看到它何时关闭:https://github.com/aspnet/Tooling/issues/245