Net46をターゲットとする.netコアコンソールアプリでSystem.Drawingを参照しようとしていますが、アセンブリがありません。 MSによると、dotnetcoreを使用している場合、System.Drawingは使用できません。しかし、完全な.netフレームワークを参照すれば、それを使用できるはずです。
これは私のproject.jsonです
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
},
"frameworks": {
"net46": {
}
}
}
問題は何ですか
System.Drawing
はASP.NETでは適切なオプションではありません(詳細: http://www.asprangers.com/post/2012/03/23/Why-you-should-not-use-SystemDrawing -from-ASPNET-applications.aspx )
グラフィック操作が必要な場合は、.Net CoreまたはImageProcessor( http://imageprocessor.org/ )でImageSharp( https://github.com/JimBobSquarePants/ImageSharp )を使用することをお勧めします)/ .Net Framework上のImageResizer( https://imageresizing.net/ )
また、本当にSystem.Drawing
を使用する必要がある場合は、project.jsonのフレームワークをnetstandard1.6
に変更し、依存関係を追加してください"NETStandard.Library": "1.6.1"
NuGet参照を追加Microsoft.Windows.Compatibility
注意:「プレリリースを含める」をマークしてください
もちろん、プレリリースパッケージに問題がない場合にのみ機能します。
私はこれが古いことを知っていますが、System.Drawing.Common
というライブラリの移植版があります。 NuGetでインストールしてみてください。
これを可能にするために、Windows Compatibility Pack
というメタパッケージがあります。ただし、このメタパッケージには、Windowsに関連する多数のAPI(パッケージとして配布)が含まれています。
ソース: https://developers.de/2018/01/22/how-to-use-system-drawing-in-net-core/
.NET Full Frameworkでasp.netコアを使用したい場合のみ、このような古いクラスライブラリを参照できます
{
"version": "1.0.0-*",
"frameworks": {
"net452": {
"dependencies": {
},
"frameworkAssemblies": {
"System.Drawing": "4.0.0.0",
}
}
}
}
System.Drawingを SkiaSharp と呼ばれるマルチプラットフォームライブラリに置き換えることができました。 Linuxで実行している場合は、 this nuget をインストールして、依存関係を手動でインストールする必要がないようにすることもできます。