Что происходит, если я удаляю автоматическое, добавил supportedRuntime элемент?

У меня есть своя цель проекта 4.0. Я обновил его к 4,5 и добавленный VS

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>

Вдобавок к изменению TargetFrameworkVersion и мне любопытно, если это избыточно. Мое понимание - то, что, если время выполнения не находит supportedRuntime, оно использует версию .NET, используемую для создания exe. Так в этом случае exe создается с помощью 4,5, и он также имеет высказывание для использования 4.5. Это вело бы себя по-другому, имею ли я это или не и выполняю его на машине, которая только имеет 4.0?

62
задан 5 February 2014 в 17:06

1 ответ

Отвечание @Dai комментирует и также обращение к тому, что при выполнении как служба Windows, Вы не можете заставить подсказку устанавливать указанную версию в файле App.config.

там какой-либо способ удалить его, но надежно осуществить.NET 4.0 по сравнению с 4,5 проверками версии в коде?

Вот то, что я использую, чтобы гарантировать, что текущая программа работает на данной версии Платформы.NET, вдохновленной от , Как я обнаруживаю во времени выполнения, что версия 4.5.NET в настоящее время выполняет Ваш код?

/// <summary>
/// Throws an exception if the current version of the .NET Framework is smaller than the specified <see cref="supportedVersion"/>.
/// </summary>
/// <param name="supportedVersion">The minimum supported version of the .NET Framework on which the current program can run.
/// The version to use is not the marketing version, but the file version of mscorlib.dll.
/// See <see href="https://blogs.msdn.microsoft.com/dougste/2016/03/17/file-version-history-for-clr-4-x/">File version history for CLR 4.x</see> and/or <see href="https://it.wikipedia.org/wiki/.NET_Framework#Versioni">.NET Framework Versioni (Build pubblicata)</see> for the version to use.
/// </param>
/// <exception cref="NotSupportedException">The current version of the .NET Framework is smaller than the specified <see cref="supportedVersion"/>.</exception>
/// <returns>The version of the .NET Framework on which the current program is running.</returns>
public static Version EnsureSupportedDotNetFrameworkVersion(Version supportedVersion)
{
    var fileVersion = typeof(int).Assembly.GetCustomAttribute<AssemblyFileVersionAttribute>();
    var currentVersion = new Version(fileVersion.Version);
    if (currentVersion < supportedVersion)
        throw new NotSupportedException($"Microsoft .NET Framework {supportedVersion} or newer is required. Current version ({currentVersion}) is not supported.");
    return currentVersion;
}

использование В качестве примера для обеспечения работающий на.NET 4.6.2:

var v462 = new Version(4, 6, 1590, 0);
EnsureSupportedDotNetFrameworkVersion(v462);
2
ответ дан 31 October 2019 в 14:19

Другие вопросы по тегам:

Похожие вопросы: