HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
아래와 같은 오류가 발생한다면?
HTTP Error 500.31 - ANCM Failed to Find Native Dependencies 
Common solutions to this issue: 
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found. 
Troubleshooting steps: 
• Check the system event log for error messages 
• Enable logging the application process' stdout messages 
• Attach a debugger to the application process and inspect 
For more information visit:  https://go.microsoft.com/fwlink/?LinkID=2028526   
이벤트 로그를 살펴봐야 합니다. 제 경우에 다음과 같은 오류가 있는데요,
Could not find 'aspnetcorev2_inprocess.dll'. Exception message:
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '3.1.22' was not found.
  - The following frameworks were found:
      3.1.0 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.22&arch=x64&rid=win10-x64
그러니까, 배포한 응용 프로그램은 3.1.22 기반으로 빌드한 것인데, 대상 컴퓨터에는 .NET Core 3.1.0 버전이 설치된 경우입니다. 아쉽게도 이럴 때는 
rollForward 설정을 해도,
{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "rollForward": "Major",
    "framework": {
      "name": "Microsoft.AspNetCore.App",
      "version": "3.1.0"
    },
    "configProperties": {
      "System.GC.Server": true,
      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
    }
  }
}
해결할 수 없습니다. 왜냐하면, rollForward는 높은 버전의 프레임워크에서 낮은 버전의 응용 프로그램을 실행하는 하위 호환성을 위한 것이지, 그 반대인 상위 호환성을 목표로 하는 옵션은 아니기 때문입니다. 따라서 이런 경우에는 3가지 방법 중의 하나를 선택해야 합니다.
- 해당 응용 프로그램을 "Framework-dependent"가 아닌 "Self-contained"로 배포
- 해당 응용 프로그램을 대상 컴퓨터의 버전에 맞게 3.1.0으로 낮춰서 제작
- 대상 컴퓨터에 3.1.22 이상의 .NET Core 런타임을 설치
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]