我可以将 .NET Core 与旧版 .NET Framework dll 一起使用吗?答案似乎是否定的......但我只能找到引用project.json 的资源,它不再存在。
我创建了一个新的 .NET 核心库并尝试引用旧的 .NET 框架 DLL。当我尝试调入 DLL 时,VS 2017 提示我没有正在寻找的 Stream
对象。
它建议我引用 mscorlib.dll 或安装 NuGet 包。
快速帮助未能引用 mscorlib.dll。如果我手动引用它,我会收到以下错误:
The type 'TargetFrameworkAttribute' exists in both 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' C:\Users...\AppData\Local\Temp.NETCoreApp,Version=v1.1.AssemblyAttributes.cs
NuGet 包是 Microsoft.NETFx2.0。快速帮助安装失败。如果我从命令行运行它:
> PM> install-package microsoft.netfx20 GET
> https://api.nuget.org/v3/registration2-gz/microsoft.netfx20/index.json
> OK
> https://api.nuget.org/v3/registration2-gz/microsoft.netfx20/index.json
> 46ms Restoring packages for ... Install-Package : Package
> Microsoft.NetFX20 1.0.3 is not compatible with netcoreapp1.1
> (.NETCoreApp,Version=v1.1). Package Microsoft.NetFX20 1.0.3 supports:
> net20 (.NETFramework,Version=v2.0)At line:1 char:1
> + install-package microsoft.netfx20
> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : NotSpecified: (:) [Install-Package], Exception
> + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
> Install-Package : One or more packages are incompatible with
> .NETCoreApp,Version=v1.1.At line:1 char:1
> + install-package microsoft.netfx20
> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : NotSpecified: (:) [Install-Package], Exception
> + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
> Install-Package : Package restore failed. Rolling back package changes
> for .At line:1 char:1
> + install-package microsoft.netfx20
> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : NotSpecified: (:) [Install-Package], Exception
> + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
> Time Elapsed: 00:00:00.8035644
最佳答案
困难的话题。通常 .NET Framework 和 .NET Core 是不兼容的。它们针对一组不同的程序集(mscorlib 与 System.Runtime),这会导致不兼容,因为类型的所有用法都以该类型来自的程序集为前缀。
从 .NET Core 2(目前处于预览阶段)开始,您可以通过不可见的兼容性填充程序引用 .NET Framework 程序集。这允许您引用程序集并成功编译。
虽然它不能保证应用程序会成功运行,因为 .NET Core 不提供 .NET Framework 中的所有 API。如果是这种情况,您将在运行时得到 PlatformNotSupportedException
或 MissingTypeException
和 friend 。
关于c# - 将 .NET Core 与旧版 .NET 框架 dll 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47567039/