web-dev-qa-db-ja.com

レガシー.netフレームワークdllで.netコアを使用する

レガシー.netフレームワークdllで.netコアを使用できますか?答えはノーのようです...しかし、私はproject.jsonを参照するリソースを見つけることができますが、これはもう存在しません

新しい.netコアライブラリを作成し、レガシー.netフレームワークDLLを参照しようとしました。 DLLを呼び出そうとすると、vs2017は、Streamオブジェクトが探していなかったと不満を漏らしました。

Mscorlib.dllまたはinstalla Nugetパッケージのいずれかを参照するよう提案されました。

クイックヘルプでmscorlib.dllを参照できませんでした。手動で参照すると、次のエラーが発生します。

タイプ 'TargetFrameworkAttribute'は 'mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'と '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
14
Hoppe

難しいトピック。通常、.NET Frameworkと.NET Coreには互換性がありません。それらは、アセンブリの異なるセット(mscorlibとSystem.Runtime)をターゲットにしており、型のすべての使用法には、その型のアセンブリのプレフィックスが付いているため、非互換性が発生します。

.NET Core 2(現在プレビュー中)以降、非表示の互換性シムを通じて.NET Frameworkアセンブリを参照できます。これにより、アセンブリを参照して正常にコンパイルできます。

.NET Coreは.NET FrameworkのすべてのAPIを提供しないため、アプリケーションが正常に実行されることは保証されません。その場合、実行時にPlatformNotSupportedExceptionまたはMissingTypeExceptionなどの友達が表示されます。

25
Suchiman