2017-10-12 5 views
1

구체적으로 말하면 System.Environment.OperatingSystem.Platform을 통해 얻을 수있는 운영 체제 정보가 아닌 개발 플랫폼 (즉, .NET 코어 대 .NET Framework 대 다른 플랫폼)을 확인해야합니다. 이것을 할 수있는 방법이 있습니까?런타임시 .NET Standard 라이브러리에서 호출 플랫폼을 식별하는 방법은 무엇입니까?

(내 특정 사례에 대한 자세한 내용은 XML 리소스를 전달하여 구성되는 log4net 라이브러리를 참조합니다. 사용 가능한 경우 구성 가능한 일부 기능은 .NET에서 지원됩니다. 프레임 워크는 있지만 .NET Core에서는 사용할 수 없으므로 다른 버전의 리소스를 전달할 수 있기를 원합니다.

+0

확실히 이것을하지 않는 것이 .NET Standard의 요점입니다. 이후로 도서관을 표준이 아닌 것으로 만들 가능성이 있습니다. 꼭해야만한다면, 주 앱이 이것을 알려주는 것을 고려해보십시오. –

답변

0

런타임 환경에서의 해결은 다음과 같이 불확실 할 수 있습니다. 런타임 변경. 나는 응용 프로그램이 실행되기 전에 문제를 강요 할 것이다. 앞에서 설명한 것처럼 런타임을 전달하거나 구성 할 수 있습니다.

또 다른 옵션은 SL4J과 비슷한 것입니다. 런타임 결정은 응용 프로그램을 배포하는 방법에 따라 다릅니다.

플랫폼 정보 공개를위한 고유 한 인터페이스를 만들 수 있습니다. 그런 다음 배포 할 때 적절한 어셈블리를 설치에 추가하기 만하면됩니다. 어셈블리를로드하고 필요한 메서드를 호출하십시오. https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/

0

내가 한 번 이렇게했다 :

은 또한 당신은 마이크로 소프트가 여기에 비슷한 상황을 처리하는 방법을 참조하십시오. 구현 방식에 따라 다양한 방식으로 호출해야했습니다. 방금 반사를 사용하여 하나의 이름을 시도했습니다.

런타임 라이브러리를 감지하려고하면 바보입니다. 차이를 직접 감지하십시오. 파손 가능성이 적습니다.