Предполагая, что:
- Исходный код С# ниже компилируется в .NET 2.0 (CLR 2.0); и
- В приведенном выше приложении используется
app.config
, приведенный ниже; и - Только среда .NET 4.0 (CLR 4.0) установлена в среде клиента, выполняющего приложение,
то какая версия .NET будет загружена изнутри для выполнения приложения в клиентской среде?
Описание
Консольное приложение ниже просто покажет, что его версия CLR v4.0.30319
в консоли, но ответ @Reed Copsey из стека (CLR 2.0 vs 4.0 performance?) показывает, что в этом случае загружается .NET 2.0. Более того, в MSDN говорится, что если useLegacyV2RuntimeActivationPolicy
установлено в false false
:
Используйте политику активации по умолчанию для .NET Framework 4 и более поздних версий, , что позволяет использовать устаревшие методы активации во время загрузки CLR версии 1.1 или 2.0.
Похоже, что .NET 2.0 загружен, несмотря на то, что app.config
имеет конфигурацию .NET 4.0. Я что-то не понял?
Источник
Исходный код С#
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string version = Environment.Version.ToString();
Console.WriteLine(version);
}
}
}
app.config
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="false">
<supportedRuntime version="v4.0.30319"/>
</startup>
</configuration>