2017-11-06 1 views
0

System.Drawing 패키지를 사용하는 .Net Core 2.0 C# 웹 응용 프로그램을 빌드 중입니다.여러 컴퓨터의 System.Drawing 패키지 사용 (복수 OS)

나는 Mac에서 코드를 작성하고 있지만 Windows 컴퓨터에서도 개발되고 Linux 서버에 배포됩니다.

OSX에서 System.Drawing을 사용하려면 프로젝트 종속성에 runtime.osx.10.10-x64.CoreCompat.System.Drawing Nuget 패키지를 추가해야했습니다.

하지만이 코드는 이제 Window 시스템에서 작동하지 않습니다. Graphics (System.Drawing의 일부) 개체의 DrawString 메서드를 사용하려고하면 System.AccessViolationException이 발생합니다.

그래서, 내 질문은 이것을 해결하는 일반적인 방법은 무엇입니까? 이 multi-os 설정에서 System.Drawing 클래스를 사용할 수 있습니까?

답변

2

동일한 System.Drawing 코드는 Linux, Windows 및 MacOS에서 변경하지 않고 작동해야합니다. Mac에서 System.Drawing을 사용하기 위해 수동으로 libgdiplus (예 : brew install mono-libgdiplus)를 설치하거나 runtime.osx.10.10-x64.CoreCompat.System.Drawing을 참조해야합니다.

System.Drawing은 외부 종속성없이 Windows에서 작동합니다.

여전히 CoreCompat.System.Drawing (내가 유지 관리하고있는)을 사용하고 있다면 System.Drawing.Common으로 마이그레이션하는 것이 좋습니다.이 방법은 Microsoft .NET Framework 용 System.Drawing입니다.

문제가 여전히 Windows에서 재생되는 경우 가장 좋은 방법은 문제를 재현하는 데 사용할 수있는 코드 조각을 복사하여 볼 수 있도록하는 것입니다.

관련 문제