从 .net 核心应用程序引用 "traditional"(旧).net 库的可能性
Possibility to reference "traditional" (old) .net libraries from .net core applications
关于从 .net 核心应用程序(例如 ASP.Net 核心)到常用的 .net 框架库的反向引用可能性,有一些令人困惑的信息。我现在的印象是:
- 如果您正在使用 "netcoreapp1.0",那么您根本无法引用普通库。
- 如果您正在使用例如"net451",然后就可以引用了,但是要先用对应的tag打包成nuget包。
这听起来正确吗?
P.S。我在想,也许在案例 1 中反编译为 IL 并重新编译回 "netcoreapp1.0" 或 "netstandard1.6" 或其他一些巫术会有帮助吗?
P.P.S。正如评论中提到的,可以引用普通的 class 库项目,后者又可以引用该库,但这意味着您必须包装库中的所有内容,因此是否可以使用取决于很多。
目前这是不可能的。
您有 3 个选项:
- 尝试将您的旧项目转换为可移植的 class 库 (PCL),然后您的 .net 核心应用程序可以引用它。
- 将您的项目包装到 nuget 包中(您已经提到过)
- 将项目添加为 class 库(在评论中提到),但根据 that SO answer and that GitHub thread 的说法,使其工作似乎并不容易。
2017 年 3 月编辑:
刚刚遇到 this post:现在似乎可以通过更改 .csproj 使您的 .NET Core 应用程序以 .NET 4.6 为目标,未经测试(尚未)
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
到
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
然后是 dotnet restore
然后是 dotnet run
关于从 .net 核心应用程序(例如 ASP.Net 核心)到常用的 .net 框架库的反向引用可能性,有一些令人困惑的信息。我现在的印象是:
- 如果您正在使用 "netcoreapp1.0",那么您根本无法引用普通库。
- 如果您正在使用例如"net451",然后就可以引用了,但是要先用对应的tag打包成nuget包。
这听起来正确吗?
P.S。我在想,也许在案例 1 中反编译为 IL 并重新编译回 "netcoreapp1.0" 或 "netstandard1.6" 或其他一些巫术会有帮助吗?
P.P.S。正如评论中提到的,可以引用普通的 class 库项目,后者又可以引用该库,但这意味着您必须包装库中的所有内容,因此是否可以使用取决于很多。
目前这是不可能的。
您有 3 个选项:
- 尝试将您的旧项目转换为可移植的 class 库 (PCL),然后您的 .net 核心应用程序可以引用它。
- 将您的项目包装到 nuget 包中(您已经提到过)
- 将项目添加为 class 库(在评论中提到),但根据 that SO answer and that GitHub thread 的说法,使其工作似乎并不容易。
2017 年 3 月编辑: 刚刚遇到 this post:现在似乎可以通过更改 .csproj 使您的 .NET Core 应用程序以 .NET 4.6 为目标,未经测试(尚未)
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
到
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
然后是 dotnet restore
然后是 dotnet run