从 .NET Core 应用程序引用 .NET 4.6.2 class 库
Referencing .NET 4.6.2 class library from .NET Core app
我正在使用 VS 更新 3 (14.0.25425.01)。这是我所做的:
- 创建 ASP.Net 核心 Web 应用程序 (.Net Core)
- 创建 Class 库 .Net 4.6.2
- 将
net462
添加到框架,netcoreapp1.0
,导入 project.json
- 右键单击 ASP.Net 核心应用程序,单击添加引用、select 项目、select Class 您在步骤 2 中创建的库。
我在还原时没有遇到任何错误,参考已添加到 ASP.Net 核心应用程序。但是,我无法访问它。我无法添加使用导入声明或访问对象。我已经 运行 经历了很多事情,但似乎没有任何效果,而且帖子的版本非常零散。
这是 ASP.Net 核心应用程序中的 Program.cs。
更新
我按照内特的建议做了。我以为我已经试过了……但果然我现在可以访问我的 4.6.2 库了。但是,我现在遇到编译错误。
这在 Visual Studio 2015 Update 3 中确实有效,但您的 project.json
不太正确。
与其将 net462
添加到 imports
部分,不如将其添加到 frameworks
部分:
"frameworks": {
"net461": { },
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
}
请注意,Microsoft.NETCore.App
依赖项也需要移至 netcoreapp1.0
部分。这是因为只有在编译为 .NET Core 应用程序时才需要此依赖项。
对您的 .NET 4.6.2 库的引用只是您 dependencies
部分的一部分:
"dependencies": {
(...)
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"MyLibrary": {
"target": "project"
}
}
通过以这种方式构建它,我能够在我的 .NET 4.6.2 库中引用和使用 类,没有任何问题。
作为参考,这是我使用的整个工作 project.json
:
{
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"MyLibrary": {
"target": "project"
}
},
"frameworks": {
"net461": { },
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
},
"version": "1.0.0-*"
}
@NateBarbettini 的回答完成了我原来的问题。但是我不能 运行 ASP.Net Core Web Application version 1 with my .Net 4.6.1 project as it was because it could not find a .NetCore.App v1 assembly for my .Net 4.6. 1个项目。所以我用下面的 project.json 向我的 .Net 4.6.1 项目添加了一个 project.json。
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
},
"net461": {}
}
}
接下来,在 ASP.Net 核心 Web 应用程序中通过在 .NetCore.App 下添加依赖项来修改 project.json。这样它将选择两个版本,4.6.1 和 .NetCore v1。
...
"frameworks": {
"net461": {
"dependencies": {
"ClassLibrary1": {
"target": "project"
}
}
},
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net461"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"ClassLibrary1": {
"target": "project"
}
}
}
}
到目前为止一切顺利,我可以在 .Net 4.6.1 中进行开发,它可以在 .NetCore.App v1 下运行 运行ning。但是,我认为当我的 .Net 4.6.1 项目中有其他依赖项时会出现问题。
我正在使用 VS 更新 3 (14.0.25425.01)。这是我所做的:
- 创建 ASP.Net 核心 Web 应用程序 (.Net Core)
- 创建 Class 库 .Net 4.6.2
- 将
net462
添加到框架,netcoreapp1.0
,导入 project.json - 右键单击 ASP.Net 核心应用程序,单击添加引用、select 项目、select Class 您在步骤 2 中创建的库。
我在还原时没有遇到任何错误,参考已添加到 ASP.Net 核心应用程序。但是,我无法访问它。我无法添加使用导入声明或访问对象。我已经 运行 经历了很多事情,但似乎没有任何效果,而且帖子的版本非常零散。
这是 ASP.Net 核心应用程序中的 Program.cs。
更新 我按照内特的建议做了。我以为我已经试过了……但果然我现在可以访问我的 4.6.2 库了。但是,我现在遇到编译错误。
这在 Visual Studio 2015 Update 3 中确实有效,但您的 project.json
不太正确。
与其将 net462
添加到 imports
部分,不如将其添加到 frameworks
部分:
"frameworks": {
"net461": { },
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
}
请注意,Microsoft.NETCore.App
依赖项也需要移至 netcoreapp1.0
部分。这是因为只有在编译为 .NET Core 应用程序时才需要此依赖项。
对您的 .NET 4.6.2 库的引用只是您 dependencies
部分的一部分:
"dependencies": {
(...)
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"MyLibrary": {
"target": "project"
}
}
通过以这种方式构建它,我能够在我的 .NET 4.6.2 库中引用和使用 类,没有任何问题。
作为参考,这是我使用的整个工作 project.json
:
{
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"MyLibrary": {
"target": "project"
}
},
"frameworks": {
"net461": { },
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
},
"version": "1.0.0-*"
}
@NateBarbettini 的回答完成了我原来的问题。但是我不能 运行 ASP.Net Core Web Application version 1 with my .Net 4.6.1 project as it was because it could not find a .NetCore.App v1 assembly for my .Net 4.6. 1个项目。所以我用下面的 project.json 向我的 .Net 4.6.1 项目添加了一个 project.json。
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
},
"net461": {}
}
}
接下来,在 ASP.Net 核心 Web 应用程序中通过在 .NetCore.App 下添加依赖项来修改 project.json。这样它将选择两个版本,4.6.1 和 .NetCore v1。
...
"frameworks": {
"net461": {
"dependencies": {
"ClassLibrary1": {
"target": "project"
}
}
},
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net461"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"ClassLibrary1": {
"target": "project"
}
}
}
}
到目前为止一切顺利,我可以在 .Net 4.6.1 中进行开发,它可以在 .NetCore.App v1 下运行 运行ning。但是,我认为当我的 .Net 4.6.1 项目中有其他依赖项时会出现问题。