При выполнении приложения в .net 4.0, скомпилированном в .net 2.0

Предполагается, что:

  1. Исходный код C # ниже скомпилирован под .NET 2.0 (CLR 2.0); и
  2. Вышеупомянутое приложение использует app.config , указанный ниже; и
  3. Только .NET 4.0 (CLR 4.0) устанавливается в среде клиента, выполняющего приложение,

какая версия .NET загружается изнутри для выполнения приложения в среде клиента?

Описание

Консольное приложение ниже просто покажет, что его версия CLR - v4.0.30319 в консоли, но ответ стека @Reed Copsey ( CLR 2.0 vs 4.0? ) показывает в этом случае загружается .NET 2.0. Более того, в MSDN говорится, что когда useLegacyV2RuntimeActivationPolicy имеет значение false false :

Использовать политику активации по умолчанию для .NET Framework 4 и более поздних версий, , что позволяет устаревшим методам активации среды выполнения загружать среду CLR. версия 1.1 или 2.0 в процесс.

Похоже, .NET 2.0 загружен, несмотря на то, что app.config имеет конфигурацию .NET 4.0. Я что-то неправильно понял?

Исходный код

Исходный код C #

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string version = Environment.Version.ToString();
            Console.WriteLine(version);
        }
    }
}

app.config



    
        
    

20
задан Cœur 12 February 2019 в 17:48
поделиться