Asp.net-Core

如何在 Asp.Net Core 3 中訪問 System.Drawing 即 System.Drawing.Common

  • December 13, 2019

我正在將針對完整框架的 Asp.Net Core 2.2 網站轉換為針對.Net Core 3.1 的 Asp.Net Core 3.1 應用程序。我有點不清楚與 System.Drawing 相關的依賴關係以及如何實現它們。

我的項目使用 System.Drawing 並且在 Asp.Net Core 3.1 下編譯時出現此錯誤,表明我添加了對以下內容的引用System.Drawing.Common.dll

錯誤 CS1069:在命名空間“System.Drawing”中找不到類型名稱“Image”。此類型已轉發到程序集 ‘System.Drawing.Common, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51’ 考慮添加對該程序集的引用。1-wwwGiftOasis3 C:\Users\Ron\source\repos\wwwGiftOasis3\wwwGiftOasis3\site\seller\profile\about\s-photos.cs

在 Visual Studio 中,我看不到直接將引用添加到裸機的方法,System.Drawing.Common.dll因此我假設我應該通過 NuGet 添加引用。

在 NuGet 中,我看到一個System.Drawing.Common看起來像我想要的包,但我不清楚我的項目是否滿足依賴項:

在此處輸入圖像描述

我的項目顯示了這些依賴項:

在此處輸入圖像描述

所以我有幾個與這一切相關的問題:

1)我的項目依賴Framework的事實是否Microsoft.NETCore.App滿足NuGet包的Microsoft.NETCore.Platforms依賴?

  1. 我打算只在 Windows 上執行這個 Asp.Net Core 3.1 網站這一事實是否滿足 NuGet 包的 Microsoft.Win32.SystemEvents依賴性?

System.Drawing使用特定於 Windows 的 API,因此與跨平台的 .NET Core 不兼容。Microsoft 創建了 .NET CoreSystem.Drawing.Common的就地替代品。System.Drawing它是一個精確的 API 替代品,但以跨平台而不是特定於 Windows 的方式執行圖像操作。

總而言之,是的,您只需將 NuGet 放入您的項目中,然後去城裡。您無需擔心其他任何事情。

引用自:https://stackoverflow.com/questions/59324386