2016-10-03 79 views
1

有关.net核心应用程序(例如ASP.Net Core)向后引用可能性的信息有点混淆到常用的.net框架库。我现在有以下印象:从.net核心应用程序引用“传统”(旧).net库的可能性

  1. 如果您使用的是“netcoreapp1.0”,那么您根本无法引用普通的库。
  2. 如果您正在使用例如“net451”,那么你可以参考它,但你必须首先将它包装在带有相应标签的nuget包中。

听起来不错?

P.S.我在想,也许情况1反编译为IL,并重新编译为“netcoreapp1.0”或“netstandard1.6”或其他巫术可以帮助?

P.P.S.正如在注释中提到的,可以引用普通类库项目,该项目又可以引用库,但这意味着您必须包含库中的所有内容,因此如果可以使用这些库,则需要很多。

+0

这是不可用* yet *,但有承诺能够在[.NET Standard 2]中执行一些外部引用(https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/) (在shim中搜索该页面) –

+0

在第二个选项中,您也可以引用旧格式的项目。 –

回答

4

目前这是不可能的。

你有3种选择:

  1. 尝试将旧项目转换到便携式类库(PCL),然后可以通过您的.NET应用程序的核心引用。
  2. 包装你的项目为NuGet包(你已经提到)
  3. 添加项目作为一个类库(在评论中提到的),但根据that SO answerthat GitHub thread它似乎并不容易,使其工作。

编辑于20-03-2017: 跨越this post刚来到:现在看来有可能通过改变的.csproj,UNTESTED(还)

<PropertyGroup> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    </PropertyGroup> 
有你的.NET应用程序的核心目标.NET 4.6

<PropertyGroup> 
    <TargetFramework>net46</TargetFramework> 
    </PropertyGroup> 

然后dotnet restore其次dotnet run

+0

我可以将任何普通的dll转换为可从asp.net核心应用程序引用的nuget包吗?它是否也适用于“netcoreapp1.0”或仅适用于“netXXX”? –

+0

根据这篇文章https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/28/running-net-core-apps-on-multiple-frameworks-and-what-the-target-framework-monikers -tfms-about-about 如果您想要使用传统的.NET库,则需要使用在传统.NET Framework(CLR)之上运行的ASP.NET Core。如果您的ASP.NET Core应用程序在CoreCLR上运行,那么您不能。对于你提到的那个场景,“brown-field”,推荐的方法将是我提到的第一个,所以使用运行在传统CLR(.NET Framework CLR)之上的ASP.NET Core。 – Darxtar

+0

另一个问题是我必须将包上传到nuget,还是只能在本地使用而不公开? (否则这种可能性没有意义,私密代码) –

相关问题