MSDN.WhiteKnight - Stack Overflow answers
Ответ на "C++ clr Hosting - ICLRMetaHost GetRuntime уточнение версии до 4.7.2"
Answer 953445
Такого синтаксиса нет, потому что это несколько разные вещи. Метод
GetRuntime
принимает на вход именно версию CLR, а не версию .NET Framework. Все версии .NET 4.x используют одну и ту же версию CLR, v4.0.30319. Параметрsku
в конфигурации, напротив, уточняет именно версию .NET Framework; это делается для того, чтобы в случае, когда приложение требует определенную минорную версию из набора версий 4.x, при ее отсутствии стандартный загрузчик CLR мог вывести пользователю осмысленное сообщение "Установите такую-то версию", а не просто упасть.Если вы делаете свой загрузчик, похоже, подобный функционал придется реализовать самостоятельно, считывая версии установленных .NET из реестра и сравнивая с требуемой. Однако, судя по соседству v2.x и v4.x, вы пытаетесь сделать приложение, которое совместимо с обеими версиями и не использует никаких новшеств v4.х, поэтому этот параметр вам вовсе не нужен.
Конфигурацию для этого случая можно упростить:
<supportedRuntime version="v4.0"/> <supportedRuntime version="v2.0.50727"/>
И соответствующий код инициализации CLR будет выглядеть так:
hr = pMetaHost->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&pRuntimeInfo)); if (FAILED(hr)) hr = pMetaHost->GetRuntime(L"v2.0.50727", IID_PPV_ARGS(&pRuntimeInfo)); if (FAILED(hr)) { printf("Failed to initialize CLR: HRESULT 0x%x\n", (unsigned int)hr ); exit(); }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.