Net framework что это такое: Microsoft NET Framework — что это такое зачем он нужен и как установить его на Windows

c# — Проверка версии платформы .NET Framework


Вопрос задан


Изменён
6 лет 8 месяцев назад


Просмотрен
705 раз

Необходимо чтобы при запуске программы (обязательно C#) происходила проверки наличия установленного .NET Framework 3.5 и выше.

Пока есть два варианта решения проблемы:
1. Открывать программу .NET Framework 2.0 и если проходит проверка, то запускать на версии выше.
2. Писать в другой среде, которая может проверить наличие .NET Framework как такового и после чего уже запускать программу.

Хотелось бы услышать ваши мнения.

По первому пункту я не могу найти как поменять запускаемую платформу и как потом перейти на другую программу.
По второму — на чём писать и, опять таки, как запустить программу написанную в C#.

  • c#
  • .net

Не-не, так не катит.

Программа должна не просто запускаться, а инсталлироваться на клиентской машине. Инсталляция включает установку всех необходимых redistributables, включая и нужную версию .NET. Это значит, что если ваш target — платформа младше Windows 7 (на которой .NET 3.5 ставится автоматически), вам нужно таскать с собой либо полный redistributable, либо web-инсталлятор.

В любом случае, проверка и инсталляция необходимых библиотек — это проблема не программы, а её инсталлятора.

Помимо ответа @VladD, с которым я полностью согласен, в голову приходит ещё пару вариантов:

  1. Вместе с программой поставляйте .config-файл с указанием необходимой платформы (подробнее можно почитать здесь), пример содержания конфигурационного файла:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <startup> 
        <supportedRuntime version="v2.0.50727"/>
      </startup>
    </configuration>
    

    В теории, при отсутствии нужной версии платформы, должно будет появиться окно с запросом на установку нужной версии framework’а.

  2. Сделать небольшое вспомогательное приложение — bootstrapper (собранное под второй framework, если оно на .net, или простое нативное приложение на любом языке), которое при запуске проверит версию Framework’а (лучше всего по реестру), и если всё плохо, то сообщит об этом, а если всё хорошо — запустит основное приложение.







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации



Почта

Необходима, но никому не показывается




By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.


Аудит версии .NET Framework — Lansweeper IT Asset Management

.NET Framework — это исходная реализация .NET. Он поддерживает запуск веб-сайтов, служб, настольных приложений и многого другого в Windows и по умолчанию устанавливается в современных версиях Windows. Теоретически это не требует обслуживания, но из-за изменений в стандартах безопасности рекомендуется всегда иметь последнюю версию .NET Framework. Недавно Microsoft упомянула, что некоторые конкретные выпуски ранее были подписаны с использованием сертификатов алгоритма безопасного хеширования (SHA-1). Этот алгоритм больше не считается безопасным.

Приведенный ниже аудит предоставляет обзор всех ваших устройств Windows, а также тех, на которых .NET Framework версии 4.5 или выше был обнаружен при сканировании реестра.

.NET Framework Version Audit Query

 Select Top 1000000 tblAssets.AssetID,
tblAssets. AssetName,
tblAssets.Домен,
tblAssets.Имя пользователя,
tblAssets.Домен пользователя,
Coalesce(tsysOS.Image, tsysAssetTypes.AssetTypeIcon10) Как значок,
tblAssets.IP-адрес,
tsysIPLocations.IPLocation,
tblAssetCustom.Производитель,
tblAssetCustom.Model,
tsysOS.OSname Как ОС,
tblAssets.Версия,
tblAssets.SP,
Случай
Когда TsysLastscan.Lasttime < GetDate() - 1 Тогда
'Последнее сканирование реестра более 24 часов назад! Информация может быть не актуальной. Попробуйте повторно просканировать эту машину.
Конец как комментарий,
Случай
Когда SubQuery1.Valuename не равно Null и SubQuery1.Valuename <> ''
Тогда да'
Иначе «Нет»
End As ValuenameFound,
SubQuery1.Regkey,
SubQuery1.ИмяЗначения,
Подзапрос1.Значение,
случай
при приведении (SubQuery1.Value as bigint)> = 528040, затем «.NET Framework 4.8»
при приведении (SubQuery1.Value as bigint)> = 461808, затем «.NET Framework 4.7.2»
при приведении (SubQuery1.Value as bigint)> = 461308, затем «.NET Framework 4.7.1»
при приведении (SubQuery1.Value как bigint) >= 460798, затем ". NET Framework 4.7"
при приведении (SubQuery1.Value as bigint) >= 394802, затем «.NET Framework 4.6.2»
при приведении (SubQuery1.Value as bigint) >= 394254, затем «.NET Framework 4.6.1»
при приведении (SubQuery1.Value as bigint) >= 393295, затем «.NET Framework 4.6»
при приведении (SubQuery1.Value as bigint) >= 379893, затем «.NET Framework 4.5.2»
при приведении (SubQuery1.Value as bigint)> = 378675, затем «.NET Framework 4.5.1»
при приведении (SubQuery1.Value as bigint) >= 378389, затем «.NET Framework 4.5»
заканчиваться как [версия .NET Framework],
Случай
Когда tblErrors.ErrorText не равен нулю или
tblErrors.ErrorText != '' Тогда
'Ошибка сканирования: ' + tsysasseterrortypes.ErrorMsg
Еще ''
Завершить как ScanningErrors,
TsysLastscan.Lasttime Как LastRegistryScan,
Подзапрос1.Последнее изменение,
tblAssets.Firstsee,
tblAssets.Последнее посещение,
tblAssets.Lasttried
Из tblAssets
Внутреннее соединение tblAssetCustom с tblAssets.AssetID = tblAssetCustom.AssetID
Внутреннее соединение tsysAssetTypes On tsysAssetTypes. AssetType = tblAssets.Assettype
Внутреннее соединение tsysIPLocations On tsysIPLocations.LocationID =
tblAssets.LocationID
Внутреннее соединение tblState On tblState.State = tblAssetCustom.State
Left Join tsysOS On tsysOS.OScode = tblAssets.OScode
Левое соединение (выберите отдельные первые 1000000 tblErrors.AssetID в качестве идентификатора,
Max(tblErrors.Teller) As ErrorID
Из таблицы ошибок
Сгруппировать по tblErrors.AssetID) As ScanningError On tblAssets.AssetID =
ScanningError.ID
Left Join tblErrors On ScanningError.ErrorID = tblErrors.Teller
Left Join tsysasseterrortypes On tsysasseterrortypes.Errortype =
tblErrors.ErrorType
Внутреннее соединение TsysLastscan On tblAssets.AssetID = TsysLastscan.AssetID
Внутреннее соединение TsysWaittime On TsysWaittime.CFGCode = TsysLastscan.CFGcode
Левое соединение (выберите Top 1000000 tblRegistry.AssetID,
tblRegistry.Regkey,
tblRegistry.Valuename,
tblRegistry.Value,
tblRegistry.Lastchanged
Из tblRegistry
Где tblRegistry.Regkey Like '%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' И
tblRegistry. Valuename = 'Выпуск') SubQuery1 On SubQuery1.AssetID =
tblAssets.AssetID
Где tblAssetCustom.State = 1 и TsysWaittime.CFGname = 'registry'
Заказ по tblAssets.Domain,
tblAssets.AssetName 

Что такое Entity Framework?

До .NET 3.5 мы (разработчики) часто использовали код ADO.NET или блок доступа к корпоративным данным для сохранения или извлечения данных приложения из базовой базы данных.
Раньше мы открывали соединение с базой данных, создавали набор данных для извлечения или отправки данных в базу данных, преобразовывали данные из набора данных в объекты .NET или наоборот для применения бизнес-правил. Это был громоздкий и подверженный ошибкам процесс. Microsoft предоставила платформу под названием «Entity Framework» для автоматизации всех этих действий, связанных с базой данных, для вашего приложения.

Entity Framework — это платформа ORM с открытым исходным кодом для приложений .NET, поддерживаемая Microsoft.
Это позволяет разработчикам работать с данными, используя объекты классов, специфичных для предметной области, не сосредотачиваясь на базовых таблицах и столбцах базы данных, в которых хранятся эти данные. С помощью Entity Framework разработчики могут работать с данными на более высоком уровне абстракции, а также создавать и поддерживать приложения, ориентированные на данные, с меньшим объемом кода по сравнению с традиционными приложениями.

Официальное определение: «Entity Framework — это объектно-реляционный преобразователь (O/RM), который позволяет разработчикам .NET работать с базой данных, используя объекты .NET. Это устраняет необходимость в большей части кода доступа к данным, который обычно приходится писать разработчикам».

На следующем рисунке показано, как Entity Framework вписывается в ваше приложение.

Как показано на рисунке выше, Entity Framework помещается между бизнес-сущностями (доменными классами) и базой данных. Он сохраняет данные, хранящиеся в свойствах бизнес-сущностей, а также извлекает данные из базы данных и автоматически преобразует их в объекты бизнес-сущностей.

Функции Entity Framework

  • Кроссплатформенность: EF Core — это кроссплатформенная платформа, которая может работать в Windows, Linux и Mac.
  • Моделирование: EF (Entity Framework) создает EDM (модель данных объекта) на основе сущностей POCO (обычный старый объект CLR) со свойствами получения/установки различных типов данных. Он использует эту модель при запросе или сохранении данных объекта в базовой базе данных.
  • Запрос: EF позволяет нам использовать запросы LINQ (C#/VB.NET) для извлечения данных из базовой базы данных. Поставщик базы данных преобразует эти запросы LINQ в язык запросов для конкретной базы данных (например, SQL для реляционной базы данных). EF также позволяет нам выполнять необработанные SQL-запросы непосредственно к базе данных.
  • Отслеживание изменений: EF отслеживает изменения, произошедшие с экземплярами ваших сущностей (значения свойств), которые необходимо отправить в базу данных.
  • Сохранение: EF выполняет команды INSERT, UPDATE и DELETE для базы данных на основе изменений, произошедших с вашими сущностями при вызове метода SaveChanges() . EF также предоставляет асинхронный метод SaveChangesAsync() .
  • Параллелизм: EF по умолчанию использует оптимистичный параллелизм для защиты от перезаписи изменений, внесенных другим пользователем после извлечения данных из базы данных.
  • Транзакции: EF выполняет автоматическое управление транзакциями при запросе или сохранении данных. Он также предоставляет параметры для настройки управления транзакциями.
  • Кэширование: EF включает первый уровень кэширования по умолчанию. Таким образом, повторный запрос вернет данные из кеша, а не попадет в базу данных.
  • Встроенные соглашения: EF следует соглашениям, а не шаблону программирования конфигурации, и включает набор правил по умолчанию, которые автоматически настраивают модель EF.
  • Конфигурации: EF позволяет настроить модель EF с помощью атрибутов аннотаций данных или API Fluent для переопределения соглашений по умолчанию.
  • Миграции: EF предоставляет набор команд миграции, которые можно выполнять в консоли диспетчера пакетов NuGet или в интерфейсе командной строки для создания базовой схемы базы данных или управления ею.

Последние версии Entity Framework

Microsoft представила Entity Framework в 2008 году с .NET Framework 3.5. С тех пор было выпущено множество версий Entity Framework. В настоящее время существует две последние версии Entity Framework: EF 6 и EF Core.
В следующей таблице перечислены важные различия между EF 6 и EF Core.

EF 6 История версий

Версия EF Год выпуска Платформа .NET Framework
ЭФ 6 2013 г. .NET 4.0 и .NET 4.5, VS 2012
ЭФ 5 2012 г. .NET 4.0, VS 2012
ЭФ 4.3 2011 г. .NET 4.0, VS 2012
ЭФ 4.0 2010 г. .NET 4.0, VS 2010
EF 1,0 (или 3,5) 2008 г. .NET 3.5 SP1,
VS 2008

Узнайте больше об истории версий EF 6 и его функциях здесь.