Изменения среды выполнения для миграции на платформа .NET Framework 4.5.x

В этой статье перечислены проблемы совместимости приложений, представленные в платформа .NET Framework 4.5, 4.5.1 и 4.5.2.

.NET Framework 4.5

ASP.NET

Если в GridViews для свойства AllowCustomPaging установлено значение true, может возникать событие PageIndexChanging при выходе из последней страницы представления

Сведения

В результате ошибки в .NET Framework 4.5 иногда событие System.Web.UI.WebControls.GridView.PageIndexChanging не срабатывает для System.Web.UI.WebControls.GridView со свойством System.Web.UI.WebControls.GridView.AllowCustomPaging.

Предложение

Эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework. Чтобы обойти эту проблему, приложение может иметь явный BindGrid в любом Page_Load, которое вызывает эти условия (System.Web.UI.WebControls.GridView находится на последней странице, а LastSystem.Web.UI.WebControls.GridView.PageSize отличается от System.Web.UI.WebControls.GridView.PageSize). Кроме того, приложение можно изменить, чтобы разрешить разбивку на страницы (вместо пользовательского разбиения по страницам), поскольку в этом случае проблемы не возникают.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Свойство HttpRequest.ContentEncoding запрещает кодировку UTF7

Сведения

Начиная с .NET Framework 4.5 кодировка UTF-7 запрещена в теле System.Web.HttpRequest. Данные для приложений, которые зависят от поступающих данных UTF-7, в некоторых случаях декодируются неверно.

Предложение

В идеальном случае приложения необходимо обновить, чтобы они не использовали кодировку UTF-7 в System.Web.HttpRequest. Кроме того, устаревшее поведение можно восстановить с помощью атрибута aspnet:AllowUtf7RequestContentEncoding элемента appSettings.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Метод HttpUtility.JavaScriptStringEncode экранирует символ амперсанда

Сведения

Начиная с платформа .NET Framework 4.5, System.Web.HttpUtility.JavaScriptStringEncode(String) экранирует амперсанд (&) символ.

Предложение

Если в приложении предполагается прежнее поведение данного метода, можно добавить параметр aspnet:JavaScriptDoNotEncodeAmpersand в элемент appSettings ASP.NET в файле конфигурации.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Не следует использовать iPad в файле пользовательских возможностей, так как теперь это функция браузера

Сведения

Начиная с версии .NET Framework 4.5 iPad является идентификатором в файле возможностей браузера ASP.NET по умолчанию, поэтому его не следует использовать в файле пользовательских возможностей

Предложение

Если необходимы специальные возможности для iPad, необходимо изменить поведение iPad, задав возможности в предварительно определенном шлюзе refID "IPad" вместо создания нового идентификатора IPad по сопоставлению агента пользователя.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Событие Page.LoadComplete больше не заставляет элемент управления System.Web.UI.WebControls.EntityDataSource вызывать привязку данных

Сведения

Событие LoadComplete больше не заставляет элемент управления System.Web.UI.WebControls.EntityDataSource вызывать привязку данных для изменений в параметрах создания/обновления/удаления. Это изменение исключает лишнее обращение к базе данных, не допускает сброса значений элементов управления и позволяет получить поведение, согласованное с другими элементами управления данными, такими как System.Web.UI.WebControls.SqlDataSource и System.Web.UI.WebControls.ObjectDataSource. Это изменение дает другое поведение в том маловероятном случае, когда в приложении предполагается вызов привязки данных в событии LoadComplete.

Предложение

Если есть необходимость в привязке данных, вручную вызовите ее в событии, которое возникает раньше в обратной передаче.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Профилирование приложений ASP.NET MVC4 может привести к неустранимой ошибке подсистемы выполнения

Сведения

Профилирование с использованием сборок NGEN /Profile может привести к сбою при запуске профилируемых приложений ASP.NET MVC4 с неустранимой ошибкой подсистемы выполнения

Предложение

Эта проблема решена в .NET Framework 4.5.2. Также можно избежать этой проблемы, указав COR_PRF_DISABLE_ALL_NGEN_IMAGES в маске события профилировщика.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Для совместного доступа к состоянию сеанса с ASP.NET StateServer все серверы на веб-ферме должны использовать одинаковую версию .NET Framework

Сведения

При включении состояния сеанса System.Web.SessionState.SessionStateMode.StateServer все серверы на данной веб-ферме должны использовать одинаковую версию платформы .NET Framework, чтобы состояние передавалось должным образом.

Предложение

Обновите версии платформы .NET Framework на веб-серверах, которые совместно и одновременно используют состояние.

Значение
Область применения Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Метод WebUtility.HtmlDecode больше не декодирует недопустимую входную последовательность

Сведения

По умолчанию методы декодирования больше не декодируют недопустимую входную последовательность в недопустимую строку UTF-16. Вместо этого они возвращают исходные входные данные.

Предложение

Изменение в выходных данных декодера может иметь значение, только если в строках хранятся двоичные данные, а не данные UTF-16. Чтобы явно контролировать это поведение, присвойте атрибуту aspnet:AllowRelaxedUnicodeDecoding элемента appSettings значение true, чтобы разрешить устаревшее поведение, или значение false, чтобы разрешить текущее поведение.

Значение
Область применения Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Основные сведения

Сборки, скомпилированные с прерываниями Regex.CompileToAssembly между версиями 4.0 и 4.5

Сведения

Если сборка компилированных регулярных выражений создается с помощью .NET Framework 4.5, но предназначена для .NET Framework 4, попытка использовать одно из регулярных выражений в этой сборке в системе с .NET Framework 4 создает исключение.

Предложение

Чтобы обойти эту проблему, можно воспользоваться одним из следующих способов:

  • создать сборку, содержащую регулярные выражения, с помощью .NET Framework 4;
  • использовать интерпретированное регулярное выражение.
Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

BlockingCollection<T>.TryTakeFromAny больше не вызывает исключение

Сведения

Метод TryTakeFromAny(BlockingCollection<T>[], T) больше не возвращает -1 и TakeFromAny(BlockingCollection<T>[], T) больше не вызывает исключение, если одна из коллекций помечена как завершенная. Это изменение позволяет работать с коллекциями, если одна из коллекций пуста или завершена, но другая коллекция по-прежнему содержит элементы, которые можно извлечь.

Предложение

Если метод TryTakeFromAny, возвращающий -1, и метод TakeFromAny, создающий исключение, использовались в целях управления потоком при заполнении заблокированной коллекции, такой код следует изменить для использования .Any(b =&gt; b.IsCompleted) для обнаружения этого условия.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Изменение в поведении методов Task.WaitAll с аргументами времени ожидания

Сведения

В .NET Framework 4.5 реализовано согласованное поведение методов Task.WaitAll. В .NET Framework 4 поведение этих методов было непоследовательным. По истечении времени ожидания, если одна или несколько задач были завершены или отменены до вызова метода, метод вызывал исключение System.AggregateException. По истечении времени ожидания, если ни одна задача не была завершена или отменена до вызова метода, однако одна или несколько задач входили в эти состояния после вызова метода, метод возвращал значение false.

В .NET Framework 4.5 эти перегрузки метода теперь возвращают false, если все задачи по-прежнему выполняются после истечения времени ожидания, и вызывают исключение System.AggregateException, только если входная задача была отменена (независимо от того, была ли она до или после вызова метода), а никакие другие задачи не выполняются.

Предложение

System.AggregateException Если перехватывается как средство обнаружения задачи, которая была отменена до WaitAll вызова вызова, код должен вместо этого выполнить то же обнаружение через IsCanceled свойство (например: .Any(t => t.IsCanceled)), так как платформа .NET Framework 4.6 будет вызываться только в этом случае, если все ожидаемые задачи завершаются до истечения времени ожидания.

Значение
Область применения Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Поддержка переадресации типов компилятором при настройке для различных версий mscorlib

Сведения

Новая функция CodeDOM позволяет компилятору выполнять компиляцию для целевой версии mscorlib.dll вместо версии mscorlib.dll, соответствующей .NET Framework 4.5.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

ConcurrentQueue<T>.TryPeek может возвращать ошибочные значения NULL в выходном параметре

Сведения

В некоторых сценариях с несколькими потоками System.Collections.Concurrent.ConcurrentQueue<T>.TryPeek(T) может возвращать значение true, но заполнять выходной параметр значением NULL (вместо правильного значения).

Предложение

Эта проблема решена в EntityFramework 4.5.1. Чтобы устранить проблему, выполните обновление до этой версии платформы.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

EventListeners трассировки событий Windows не выполняют запись событий от поставщиков с явными ключевыми словами (например, от поставщика TPL)

Сведения

EventListeners трассировки событий Windows с пустой маской ключевого слова неправильно записывают события от поставщиков с явными ключевыми словами. В платформе .NET Framework 4.5 поставщик TPL начал предоставлять явные ключевые слова и привел к возникновению этой проблемы. В .NET Framework 4.6 EventListeners были обновлены, чтобы больше не вызывать эту проблему.

Предложение

Чтобы обойти эту проблему, замените вызовы вызовами EnableEvents(EventSource, EventLevel) перегрузки EnableEvents, которая явно указывает маску "любые ключевое слово" для использования: EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff))

Кроме того, эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Исключения во время обработки без наблюдения в классе System.Threading.Tasks.Task больше не распространяются на поток метода завершения

Сведения

Поскольку класс System.Threading.Tasks.Task представляет асинхронную операцию, он перехватывает все исключения невысокой серьезности, происходящие во время асинхронной обработки. В .NET Framework 4.5, если исключение не наблюдается и код не ожидает задачу, исключение больше не распространяется на поток метода завершения и не приводит к сбою процесса во время сборки мусора. Это изменение повышает надежность приложений, использующих класс Task для выполнения асинхронной обработки без наблюдения.

Предложение

Если приложение зависит от асинхронных исключений без наблюдения, распространяющихся на поток метода завершения, можно восстановить прежнее поведение, предоставив соответствующий обработчик для события UnobservedTaskException или задав значение для элемента конфигурации среды выполнения.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Изменен алгоритм List.Sort

Сведения

Начиная с версии .NET Framework 4.5, алгоритм сортировки System.Collections.Generic.List<T> был изменен и реализует интроспективную сортировку вместо быстрой. Сортировка System.Collections.Generic.List<T> никогда не была стабильной, однако это изменение может привести к потере стабильности при сортировке в различных других сценариях. Это означает, что эквивалентные элементы могут сортироваться в разном порядке при последовательных вызовах API.

Предложение

Поскольку старый алгоритм сортировки также был нестабилен (в несколько другом плане), не следует использовать код, который зависит от постоянства порядка сортировки эквивалентных элементов. Если в коде присутствовала такая зависимость и он ранее выполнялся без ошибок, его следует обновить для использования компаратора, который будет осуществлять детерминированную сортировку элементов в необходимом порядке.

Имя. Значение
Область Прозрачный режим
Версия 4,5
Тип Параметры выполнения

Затронутые API

Отсутствие моникера целевой платформы приводит к поведению версии 4.0

Сведения

Приложения без атрибута System.Runtime.Versioning.TargetFrameworkAttribute, примененного на уровне сборки, будут автоматически запускаться с использованием семантики (особенностей) платформы .NET Framework 4.0. Для обеспечения высокого качества рекомендуется явным образом применить ко всем двоичным файлам атрибут System.Runtime.Versioning.TargetFrameworkAttribute, указывающий версию платформы .NET Framework, в которой они были созданы. Обратите внимание, что при использовании моникера целевой платформы в файле проекта MSBuild будет автоматически применять System.Runtime.Versioning.TargetFrameworkAttribute.

Предложение

Атрибут System.Runtime.Versioning.TargetFrameworkAttribute должен быть предоставлен либо путем его добавления непосредственно в сборку, либо путем указания целевой платформы в файле проекта или с помощью графического интерфейса свойств проекта Visual Studio.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Некоторые интерфейсы API .NET создают первый экземпляр (обрабатываемый) EntryPointNotFoundExceptions

Сведения

В .NET Framework 4.5 несколько методов .NET начали создавать первый экземпляр System.EntryPointNotFoundException. Эти исключения обрабатывались в .NET Framework, но могли нарушать работу службы автоматизации тестирования, которая не ожидала первых экземпляров исключений. Те же интерфейсы API препятствуют работе некоторых сценариев ApiVerifier, если включен тест HighVersionLie.

Предложение

Этой ошибки можно избежать путем обновления до .NET Framework 4.5.1. Кроме того, автоматизация тестирования может быть обновлена, чтобы не прерываться при исключениях первого шанса System.EntryPointNotFoundException .

Значение
Область применения Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Метод System.Threading.Tasks.Task больше не создает исключение ObjectDisposedException после удаления объекта

Сведения

За исключением IAsyncResult.AsyncWaitHandle методы System.Threading.Tasks.Task больше не вызывают исключение System.ObjectDisposedException после удаления объекта. Это изменение поддерживает использование кэшированных задач. Например, метод может возвратить кэшированную задачу для представления уже выполненной операции вместо выделения новой задачи. В предыдущих версиях платформы .NET Framework это было невозможно, поскольку любой потребитель задачи мог удалить ее, что делало ее непригодной для использования.

Предложение

Имейте в виду, что методы Task больше не могут создавать исключения System.ObjectDisposedException при удалении объекта. Если приложение зависело от этого исключения, чтобы знать, что задача была удалена, его необходимо обновить, чтобы явно проверять состояние задачи с помощью Status.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Экранирование System.Uri теперь поддерживает RFC 3986

Сведения

Экранирование URI изменилось в .NET Framework 4.5 для поддержки RFC 3986. Внесены следующие конкретные изменения.

  • Метод System.Uri.EscapeDataString(String) преобразует в escape-последовательность зарезервированные символы в соответствии с RFC 3986.
  • Метод System.Uri.EscapeUriString(String) не преобразует в escape-последовательность зарезервированные символы.
  • Метод System.Uri.UnescapeDataString(String) не создает исключение, если ему встречается неверная escape-последовательность.
  • Преобразование незарезервированных символов в escape-символы отменяется.

Предложение

  • Обновления приложений не зависят от System.Uri.UnescapeDataString(String) для создания исключения в случае недопустимой escape-последовательности. Такие последовательности должны обнаруживаться сразу же.
  • Аналогичным образом ожидается, что экранированные и неэкранированные URI и строки данных могут отличаться в .NET Framework 4.0 и .NET Framework 4.5 и их не следует сравнивать в версиях .NET напрямую. Их необходимо проанализировать и нормализовать в одной версии .NET перед выполнением каких-либо сравнений.
Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Data

В данных Sql_variant используется сортировка sql_variant, а не сортировка базы данных

Сведения

В данныхsql_variant используется сортировка sql_variant , а не сортировка базы данных.

Предложение

Это изменение предотвращает возможное повреждение данных, если сортировка базы данных отличается от сортировки sql_variant. В приложениях, в которых предполагается, что данные будут повреждены, могут возникать сбои.

Имя. Значение
Область Прозрачный режим
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

SqlBulkCopy использует кодировку целевого столбца для строк

Сведения

При вставке данных в столбец System.Data.SqlClient.SqlBulkCopy использует кодировку целевого столбца, а не кодировку по умолчанию для типов VARCHAR и CHAR. Это изменение исключает возможность повреждения данных, вызванного использованием кодировки по умолчанию, если в целевом столбце не используется кодировка по умолчанию. В редких случаях существующее приложение может создавать исключение SqlException, если при изменении кодировки создаются слишком большие для целевого столбца данные.

Предложение

Учитывайте, что System.Data.SqlClient.SqlBulkCopy больше не будет повреждать данные из-за различий в кодировке. Если размер копируемых строк близок к установленному для целевого столбца ограничению, может потребоваться предварительное кодирование данных (с целью копирования для проверки того, что они поместятся в целевом столбце) или перехват исключений System.Data.SqlClient.SqlException.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

SqlConnection больше не может подключаться к SQL Server 1997 или базам данных с помощью адаптера VIA

Сведения

Подключения к базам данных SQL Server с помощью протокола Virtual Interface Adapter (VIA) больше не поддерживаются. Протокол, используемый для подключения к базе данных SQL Server, отображается в строке подключения. Для соединения VIA указано via:<имя_сервера>. Если это приложение подключается к SQL по протоколу, который отличается от VIA (например, tcp: или np:), критических изменений не будет. Также больше не поддерживаются подключения к SQL Server 7 (1997).

Предложение

Не рекомендуется использовать протокол VIA. Выберите другой протокол для подключения к базам данных SQL. Обычно используется протокол TCP/IP. Дополнительные сведения см. в статье Практическое руководство. Включение протокола TCP/IP для экземпляра базы данных. Если доступ к базе данных осуществляется только из интрасети, протокол общих каналов может обеспечить более высокую производительность, если сеть работает слишком медленно.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

SqlConnection.Open завершается ошибкой в Windows 7 при наличии базовых поставщиков услуг или многоуровневых поставщиков услуг Winsock, не относящихся к IFS

Сведения

Open() и OpenAsync(CancellationToken) завершаются сбоем в .NET Framework 4.5 в Windows 7 при наличии на компьютере базовых поставщиков услуг или многоуровневых поставщиков услуг Winsock, не относящихся к IFS. Чтобы определить, установлен ли базовый или многоуровневый поставщик услуг, не относящийся к IFS, выполните команду netsh WinSock Show Catalog и проверьте все возвращаемые ей элементы Winsock Catalog Provider Entry. Если в качестве значения флагов службы задано 0x20000 бит, поставщик использует маркеры IFS и будет работать правильно. Если флаг 0x20000 бит снят (значение не задано), это поставщик BSP или LSP, не относящийся к IFS.

Предложение

Это ошибка исправлена в .NET Framework 4.5.2, поэтому ее можно избежать путем обновления .NET Framework. Кроме того, ее можно избежать, удалив все установленные поставщики LSP Winsock, не относящиеся к IFS.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Отладчик

Значения NULL операции объединения отображаются в отладчике с запаздыванием на один шаг

Сведения

Из-за ошибки в .NET Framework 4.5 значения, заданные с использованием операции объединения NULL, не отображаются в отладчике немедленно после выполнения операции присваивания в 64-разрядной версии платформы.

Предложение

После выполнения одного дополнительного шага в отладчике локальные значения или значения поля корректно обновляются. Эта проблема также была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Entity Framework

Изменение поведения API-интерфейсов языка описания данных (DDL)

Сведения

Поведение API-интерфейсов языка DDL при заданном значении AttachDBFilename изменилось следующим образом.

  • В строках подключения не требуется указывать значение Initial Catalog. Ранее требовались оба значения — AttachDBFilename и Initial Catalog.
  • Если указаны AttachDBFilename и Initial Catalog и данный MDF-файл существует, метод DatabaseExists возвращает значение true. Раньше он возвращал значение false.
  • Если указаны AttachDBFilename и Initial Catalog и данный MDF-файл существует, при вызове метода DeleteDatabase файлы будут удалены.
  • При вызове метода DeleteDatabase, когда в строке подключения указано значение AttachDBFilename с несуществующим MDF-файлом и Initial Catalog не существует, этот метод вызывает исключение InvalidOperationException. Раньше он вызывал исключение SqlException.

Предложение

Эти изменения облегчают создание средств и приложений, в которых используются API-интерфейсы DDL. Эти изменения могут повлиять на совместимость приложений в следующих сценариях:

  • Пользователь пишет код, который выполняет команду DROP DATABASE напрямую, а не вызывает метод DeleteDatabase, если метод DatabaseExists возвращает значение true. Это нарушает логику существующего кода, если база данных не присоединена, но MDF-файл существует.
  • Пользователь пишет код, который ожидает, что метод DeleteDatabase вызовет исключение SqlException, а не InvalidOperationException, когда Initial Catalog и MDF-файл не существуют.
Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Исключения обрабатываются по-разному для методов ObjectContext.CreateDatabase и DbProviderServices.CreateDatabase

Сведения

Начиная с .NET Framework 4.5, если происходит сбой создания базы данных, методы CreateDatabase будут пытаться удалить пустую базу данных. Если эта операция выполняется успешно, будет распространяться исходное исключение System.Data.SqlClient.SqlException (вместо System.InvalidOperationException, которое всегда создавалось в .NET Framework 4.0).

Предложение

При перехвате System.InvalidOperationException во время выполнения CreateDatabase() или CreateDatabase(DbConnection, Nullable<Int32>, StoreItemCollection) теперь также должны обрабатываться исключения SQLException.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

EntityFramework 6.0 очень медленно загружается в приложениях, запускаемых из Visual Studio

Сведения

Запуск приложения из среды Visual Studio 2013, которая использует EntityFramework 6.0, может проходить очень медленно.

Предложение

Эта проблема решена в EntityFramework 6.0.2. Обновите EntityFramework, чтобы избежать проблем с производительностью.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Имя файла журнала, созданного методом ObjectContext.CreateDatabase, изменилось в соответствии со спецификациями SQL Server

Сведения

При вызове метода System.Data.Objects.ObjectContext.CreateDatabase() либо напрямую, либо с использованием Code First с поставщиком SqlClient и значения AttachDBFilename в строке подключения он создает файл журнала с именем filename_log.ldf вместо filename.ldf (где filename — имя файла, заданное значением AttachDBFilename). Это изменение улучшает отладку, предоставляя файл журнала, имя которого соответствует спецификациям SQL Server.

Предложение

Если имя файла журнала важно для приложения, приложение следует обновить для использования стандартного формата имени файла _log.ldf.

Значение
Область применения Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

ObjectContext.Translate и ObjectContext.ExecuteStoreQuery теперь поддерживают тип перечисления

Сведения

В .NET Framework 4.0 универсальный параметр T методов ObjectContext.Translate и ObjectContext.ExecuteStoreQuery не мог иметь тип перечисления. Теперь этот сценарий поддерживается.

Предложение

Если метод Translate или ExecuteStoreQuery вызывался для типа перечисления в .NET Framework 4.0, возвращалось значение "0". Если такое поведение было желательным, вызовы следовало заменять константой 0 (или его эквивалентом перечисления).

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

LINQ

Enumerable.Empty<TResult> всегда возвращает кэшированный экземпляр

Сведения

Начиная с версии .NET Framework 4.5 Empty<TResult>() всегда возвращает кэшированный внутренний экземпляр IEnumerable<T>. Ранее Empty<TResult>() кэшировал пустой IEnumerable<T> в момент вызова API, и в некоторых ситуациях, когда Empty<TResult>() вызывался быстро и параллельно, для различных вызовов API могли возвращаться разные экземпляры типа.

Предложение

Так как прежнее поведение было недетерминированным, код вряд ли зависит от него. Однако в том маловероятном случае, когда выполняется сравнение пустых перечислений и ожидается, что они будут неравными, следует создать явные пустые массивы (new T[0]) и не использовать Empty<TResult>().

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Managed Extensibility Framework (MEF)

Каталоги MEF реализуют IEnumerable и поэтому больше не могут использоваться для создания сериализатора

Сведения

Начиная с .NET Framework 4.5 каталоги MEF реализуют IEnumerable и поэтому больше не могут использоваться для создания сериализатора (объекта System.Xml.Serialization.XmlSerializer). При попытке сериализации каталога MEF происходит вызов исключения.

Предложение

Больше не следует использовать MEF для создания сериализатора.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Сеть

Десериализация объектов MailMessage, сериализованных в .NET Framework 4.5, может завершиться сбоем

Сведения

Начиная с версии .NET Framework 4.5, объекты MailMessage могут содержать символы, отличные от ASCII. В .NET Framework 4 поддерживаются только символы ASCII. В .NET Framework 4 не могут быть десериализованы объекты MailMessage, содержащие отличные от ASCII символы и сериализованные в .NET Framework 4.5 или более поздней версии.

Предложение

Убедитесь, что в коде реализована обработка исключений при десериализации объекта MailMessage.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Пространство имен System.Net.PeerToPeer.Collaboration недоступно в Windows 8

Сведения

Пространство имен System.Net.PeerToPeer.Collaboration недоступно в Windows 8.

Предложение

Приложения, которые поддерживают Windows 8 или более поздние версии, должны быть обновлены, чтобы не зависеть от этого пространства имен или его элементов.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

Печать

Данные, записанные в PrintSystemJobInfo.JobStream, должны иметь формат XPS

Сведения

Свойство JobStream предоставляет поток задания печати. Пользователь может отправить необработанные данные в компоненты печати базовой операционной системы путем записи в этот поток. Начиная с .NET Framework 4.5 в Windows 8 и более поздних версиях операционной системы Windows данные, которые записываются в этот поток, должны быть в формате XPS, как поток пакета.

Предложение

Для вывода содержимого печати выполните одно из следующих действий.

  • Используйте класс XpsDocumentWriter класса для вывода содержимого печати. Это рекомендуемый вариант.
  • Убедитесь, что данные, отправляемые в поток, возвращенный свойством JobStream, находятся в формате XPS, как поток пакета.
Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Сериализация

BinaryFormatter может не находить тип в контексте LoadFrom

Сведения

Начиная с .NET Framework 4.5 ряд изменений System.Xml.Serialization.XmlSerializer может привести к различиям в десериализации при использовании System.Runtime.Serialization.Formatters.Binary.BinaryFormatter для десериализации типов, загруженных в контекст LoadFrom. Эти изменения связаны с тем, что System.Xml.Serialization.XmlSerializer теперь иначе загружает тип. Это приводит к другому поведению, когда System.Runtime.Serialization.Formatters.Binary.BinaryFormatter пытается выполнить десериализацию в этот тип позднее. Модуль привязки сериализации по умолчанию не выполняет автоматический поиск контекста LoadFrom, хотя это могло работать в некоторых случаях при старом поведении XmlSerializer. В связи с изменениями, когда этот тип загружается из сборки, загруженной в другом контексте, может возникнуть исключение System.IO.FileNotFoundException.

Предупреждение

Двоичная сериализация может BinaryFormatter быть опасной. Дополнительные сведения см. в статье Руководство по безопасности BinaryFormatter.

Предложение

Если это исключение возникает, в свойстве BinderSystem.Runtime.Serialization.Formatters.Binary.BinaryFormatter можно задать пользовательский модуль привязки, который найдет правильный тип.

var formatter = new BinaryFormatter { Binder = new TypeFinderBinder() }

А затем пользовательский модуль привязки:

public class TypeFinderBinder : SerializationBinder
{
    private static readonly string s_assemblyName = Assembly.GetExecutingAssembly().FullName;

    public override Type BindToType(string assemblyName, string typeName)
    {
        return Type.GetType(String.Format(CultureInfo.InvariantCulture, "{0}, {1}", typeName, s_assemblyName));
    }
}
Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Классу SoapFormatter не удается выполнить десериализацию хэш-таблицы и подобных упорядоченных объектов коллекции

Сведения

Класс System.Runtime.Serialization.Formatters.Soap.SoapFormatter не гарантирует, что объекты, сериализованные в одной версии .NET Framework, будут успешно десериализованы в другой версии платформы. В частности, в некоторые упорядоченные коллекции (например, System.Collections.Hashtable) добавлены элементы в версиях с 4.0 по 4.5, поэтому объекты этих типов не могут быть десериализованы в .NET Framework 4.0, если бы они были сериализованы в .NET Framework 4.5. Обратите внимание, что если сериализованные данные сериализуются и десериализуются в одной версии .NET Framework, проблемы не возникают.

Предложение

Чтобы обеспечить поддержку изменений в .NET Framework, сериализацию System.Runtime.Serialization.Formatters.Soap.SoapFormatter следует заменить на сериализацию System.Runtime.Serialization.Formatters.Binary.BinaryFormatter или System.Runtime.Serialization.NetDataContractSerializer.

Предупреждение

Двоичная сериализация может BinaryFormatter быть опасной. Дополнительные сведения см. в статье Руководство по безопасности BinaryFormatter.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

XmlSerializer завершается сбоем при сериализации типа, который скрывает доступный член недоступным

Сведения

При сериализации производного типа System.Xml.Serialization.XmlSerializer может завершаться сбоем, если тип содержит недоступное поле или свойство, которое скрывает (посредством ключевого слова "new") ранее доступное поле или свойство с тем же именем (например, public) в базовом типе.

Предложение

Эту проблему можно решить, сделав новый, скрытие элемента доступным для него System.Xml.Serialization.XmlSerializer (помечая его общедоступным, например). Кроме того, следующий параметр конфигурации отменить изменения по 4.0System.Xml.Serialization.XmlSerializer, что исправит проблему:

<system.xml.serialization>
<xmlSerializer useLegacySerializerGeneration="true" />
</system.xml.serialization>
Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

веб-приложения

Элементы управления Managed Browser в .NET Framework 1.1 и 2.0 заблокированы

Сведения

Размещение этих элементов управления в Internet Explorer блокируется.

Предложение

Internet Explorer не сможет запустить приложение, в котором используются управляемые элементы управления, размещенные в браузере. Прежнее поведение можно восстановить путем установки параметру EnableIEHosting подраздела реестра HKLM/SOFTWARE/MICROSOFT/.NETFramework значения 1 для систем x86 и для 32-разрядных процессов в системах x64, а также путем установки параметру EnableIEHosting подраздела реестра HKLM/SOFTWARE/Wow6432Node/Microsoft/.NETFramework значения 1 для 64-разрядных процессов в системах x64.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Windows Communication Foundation (WCF)

Коды ошибок для maxRequestLength или maxReceivedMessageSize различаются

Сведения

Если длина сообщений в веб-службах WCF, размещенных в службах IIS или на сервере ASP.NET Development Server, превышает maxRequestLength (в ASP.NET) или maxReceivedMessageSize (в WCF), им присваиваются разные коды ошибок. Код состояния HTTP изменился с 400 (неверный запрос) на 413 (слишком большая сущность запроса), а для сообщений, длина которых превышает maxRequestLength или maxReceivedMessageSize, теперь создается исключение System.ServiceModel.ProtocolException. Сюда входят случаи, в которых режимом передачи является Streamed.

Предложение

Это изменение облегчает отладку в тех случаях, когда длина сообщения превышает ограничения, установленные ASP.NET или WCF. Необходимо внести изменения во весь код, который выполняет обработку на основании кода состояния HTTP 400.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Объект System.ServiceModel.Web.WebServiceHost больше не добавляет конечную точку по умолчанию

Сведения

Объект WebServiceHost теперь не добавляет конечную точку по умолчанию, если в коде приложения явным образом добавлена конечная точка.

Предложение

Если пользователи хотят иметь возможность подключаться к конечной точке по умолчанию и другие явные конечные точки были добавлены в System.ServiceModel.Web.WebServiceHost, конечные точки по умолчанию необходимо также добавить явным образом (с помощью System.ServiceModel.ServiceHostBase.AddDefaultEndpoints()).

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Метод Replace в URL-адресах OData по умолчанию отключен

Сведения

Начиная с .NET Framework 4.5, метод Replace в URL-адресах OData по умолчанию отключен. Если метод Replace OData отключен (теперь по умолчанию), все запросы пользователя, включая функции Replace (которые используются редко), завершатся ошибкой.

Предложение

Если необходим метод Replace (который используется редко), его можно включить в параметрах конфигурации (System.Data.Services.Configuration.DataServicesFeaturesSection.ReplaceFunction). Однако включенный метод Replace может открывать уязвимости системы безопасности, поэтому он должен использоваться только после тщательной проверки.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Windows Forms

PreviewLostKeyboardFocus вызывается повторно, если соответствующий обработчик выводит окно сообщения Windows Forms

Сведения

Начиная с .NET Framework 4.5, вызов MessageBox.Show из обработчика PreviewLostKeyboardFocus приведет к повторному запуску обработчика после закрытия окна сообщения. В результате может начаться бесконечный цикл вывода окон сообщений.

Предложение

Существует два способа решения этой проблемы:

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Свойство CheckForOverflowUnderflow WinForm теперь имеет значение true для System.Drawing

Сведения

Свойство CheckForOverflowUnderflow для сборки System.Drawing.dll имеет значение true.

Предложение

Раньше при переполнениях результат усекался без уведомления. Теперь создается исключение System.OverflowException,

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Windows Presentation Foundation (WPF)

Доступ к выделенным элементам DataGrid WPF из события UnloadingRow DataGrid может привести к исключению NullReferenceException

Сведения

Из-за ошибки в .NET Framework 4.5 обработчики событий DataGrid, которые выполняют удаление строки, могут привести к созданию исключения System.NullReferenceException при попытке получить доступ к свойствам System.Windows.Controls.Primitives.Selector.SelectedItem или System.Windows.Controls.Primitives.MultiSelector.SelectedItemsDataGrid.

Предложение

Эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Вызов метода DataGrid.CommitEdit из обработчика CellEditEnding удаляет фокус

Сведения

Вызов метода CommitEdit() из одного из обработчиков событий System.Windows.Controls.DataGridSystem.Windows.Controls.DataGrid.CellEditEnding приводит к потере фокуса для System.Windows.Controls.DataGrid.

Предложение

Это ошибка исправлена в .NET Framework 4.5.2, поэтому ее можно избежать путем обновления .NET Framework. Кроме того, ее можно избежать, явным образом повторно выбрав System.Windows.Controls.DataGrid после вызова System.Windows.Controls.DataGrid.CommitEdit().

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Вызов Items.Refresh для ListBox, ListView или DataGrid в WPF с выбранным элементом может привести к появлению в элементе повторяющихся записей

Сведения

В .NET Framework 4.5 вызов ListBox.Items.Refresh из кода, когда элементы выбраны в System.Windows.Controls.ListBox, может привести к дублированию выбранных элементов в списке. Аналогичная проблема возникает с System.Windows.Controls.ListView и System.Windows.Controls.DataGrid. Эта проблема устранена в EntityFramework 4.6.

Предложение

Эту проблему можно решить с помощью программных средств, отменив выбор элементов до вызова метода System.Windows.Data.CollectionView.Refresh() и затем повторно выбрав их после завершения вызова. Кроме того, эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework.

Значение
Область применения Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

FlowDocument может отображать дополнительную строку текста

Сведения

В некоторых случаях при работе с .NET Framework 4.5 в элементе FlowDocument отображается лишняя строка текста по сравнению с выполнением в .NET Framework 4.0. Случаи неправильного или неразборчивого отображения текста в связи с этим изменением не выявлены, однако эта проблема может привести к отображению текста, который ранее был опущен из представления FlowDocument.

Предложение

В некоторых случаях для восстановления исходного количества строк можно уменьшить значение свойства PageHeight на единицу.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Начиная с .NET Framework 4.5 GlyphRun.ComputeInkBoundingBox() и FormattedText.Extent возвращают разные значения

Сведения

В .NET Framework 4.5 были усовершенствованы ComputeInkBoundingBox() и Extent для решения проблем, когда в некоторых случаях в .NET Framework 4.0 прямоугольники были слишком малы для содержащихся глифов. В результате, начиная с .NET Framework 4.5, некоторые ограничивающие прямоугольники будут иметь больший размер, что приведет к незначительным отличиям в макете пользовательского интерфейса.

Предложение

Имейте в виду, что размеры некоторых ограничивающих прямоугольников глифов увеличены. Эти изменения обычно улучшают представление и проверку нахождения в поле. Прежнее (до .NET 4.5) поведение можно восстановить, добавив следующую запись в файл app.config.

<appsettings>
<add key="IncludeAllInkInBoundingBox" value="false">
</appsettings>
Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Периодически не удается выполнить прокрутку до нижнего элемента в ItemsControls (таких как ListBox и DataGrid) при использовании пользовательских DataTemplates

Сведения

В некоторых случаях ошибка в .NET Framework 4.5 приводит к тому, что ItemsControls (например, System.Windows.Controls.ListBox, System.Windows.Controls.ComboBox, System.Windows.Controls.DataGrid и т. д.) не удается выполнить прокрутку до нижнего элемента при использовании пользовательских DataTemplates. Если попытка прокрутки предпринимается повторно (после прокрутки вверх), прокрутка будет работать.

Предложение

Эта проблема была устранена в .NET Framework 4.5.2 и может быть решена путем обновления до этой версии (или более поздней) платформы .NET Framework. Кроме того, пользователи по-прежнему могут перетаскивать полосы прокрутки к последним элементам в этих коллекциях, однако для успешного выполнения этой задачи это может потребоваться сделать дважды.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Items.Clear не удаляет дубликаты из SelectedItems

Сведения

Если в элементе Selector, поддерживающем выбор нескольких элементов, в коллекции System.Windows.Controls.Primitives.MultiSelector.SelectedItems присутствуют дубликаты, один и тот же элемент присутствует несколько раз. Удаление этих элементов из источника данных (например, путем вызова Items.Clear) не приведет к их удалению из коллекции System.Windows.Controls.Primitives.MultiSelector.SelectedItems. Будет удален только первый экземпляр. Более того, последующее использование коллекции System.Windows.Controls.Primitives.MultiSelector.SelectedItems, например вызов SelectedItems.Clear(), может вызвать проблемы, например исключение System.ArgumentException, так как коллекция System.Windows.Controls.Primitives.MultiSelector.SelectedItems содержит элементы, которые отсутствуют в источнике данных.

Предложение

По возможности выполните обновление до .NET 4.6.2.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Проблема с привязкой ListBoxItem IsSelected к ObservableCollection<T>.Move

Сведения

Вызов Move(Int32, Int32) или MoveItem(Int32, Int32) для коллекции, привязанной к System.Windows.Controls.ListBox с выделенными элементами, может привести к последующему выделению или отмене выделения элементов System.Windows.Controls.ListBox.

Предложение

Чтобы обойти эту проблему, выполните вызов System.Collections.ObjectModel.Collection<T>.Remove(T) и System.Collections.ObjectModel.Collection<T>.Insert(Int32, T) вместо Move(Int32, Int32). Кроме того, эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Новые значения перечисления в перечислении PageRangeSelection WPF

Сведения

Было добавлено два новых члена (System.Windows.Controls.PageRangeSelection.CurrentPage и System.Windows.Controls.PageRangeSelection.SelectedPages) в перечисление System.Windows.Controls.PageRangeSelection.

Предложение

В большинстве случаев эти изменения не влияют на код пользователя. Однако следует изменить код, зависящий от конкретного числа элементов, существующих в вызовах GetNames(Type) или GetValues(Type) к типу System.Windows.Controls.PageRangeSelection.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

PreviewLostKeyboardFocus вызывается повторно, если соответствующий обработчик выводит окно сообщения Windows Forms

Сведения

Начиная с .NET Framework 4.5, вызов MessageBox.Show из обработчика PreviewLostKeyboardFocus приведет к повторному запуску обработчика после закрытия окна сообщения. В результате может начаться бесконечный цикл вывода окон сообщений.

Предложение

Существует два способа решения этой проблемы:

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

При щелчке правой кнопкой мыши на заголовке строки WPF DataGrid изменяется выделение DataGrid

Сведения

Если щелкнуть правой кнопкой мыши выделенный заголовок строки System.Windows.Controls.DataGrid при наличии нескольких выделенных строк, выделение System.Windows.Controls.DataGrid изменится таким образом, что будет выделена только эта строка.

Предложение

Эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Прокрутка WPF TreeView или сгруппированного ListBox в VirtualizingStackPanel может привести к остановке ответа приложения

Сведения

В платформа .NET Framework версии 4.5 прокрутка WPF System.Windows.Controls.TreeView на виртуализированной панели стека может привести к тому, что приложение перестанет отвечать на запросы, если в представлении есть поля (например, между элементами в System.Windows.Controls.TreeViewэлементе ItemsPresenter). Кроме того, в некоторых случаях элементы разных размеров в представлении могут привести к нестабильности даже при отсутствии полей.

Предложение

Этой ошибки можно избежать путем обновления до .NET Framework 4.5.1. Кроме того, можно удалить поля из коллекций представлений (таких как System.Windows.Controls.TreeView) на панелях виртуализированных стеков, если все содержащиеся в них элементы имеют одинаковый размер.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

Элементы WPF DataTemplate теперь отображаются в UIA

Сведения

Ранее элементы System.Windows.DataTemplate не отображались в службе автоматизации пользовательского интерфейса. Начиная с версии 4.5, служба автоматизации пользовательского интерфейса будет обнаруживать эти элементы. Это полезно во многих случаях, но может нарушить выполнение тестов, зависящих от деревьев UIA, не содержащих элементы System.Windows.DataTemplate.

Предложение

Тесты службы автоматизации пользовательского интерфейса для этого приложения может потребоваться обновить с учетом того, что теперь дерево UIA содержит ранее невидимые элементы System.Windows.DataTemplate. Например, тесты, которые ожидают, что некоторые элементы находятся рядом друг с другом, теперь могут ожидать, что между ними располагаются ранее невидимые элементы UIA. Или может потребоваться обновить новыми значениями тесты, которые зависят от определенных количеств или индексов для UIA элементов.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Метод DispatcherSynchronizationContext.CreateCopy WPF теперь возвращает новую копию вместо текущего экземпляра

Сведения

В .NET Framework 4 метод CreateCopy() возвращал ссылку на текущий экземпляр главным образом в качестве оптимизации производительности. В .NET Framework 4.5 он возвращает новый экземпляр, что позволяет впервые делать заключение о том, что одинаковые ссылки указывают на то, что выполняющийся поток находится в правильном контексте синхронизации. Маловероятно, что будет затронут код, который проверяет подлинность этих ссылок, но в связи с изменением необходимо протестировать код, который вызывает CreateCopy(), в ходе миграции на .NET Framework 4.5 или более позднюю версию.

Предложение

Учитывайте, что CreateCopy() теперь возвращает новый объект System.Threading.SynchronizationContext. Ранее код, который использовал эквивалентность ссылок, на самом деле не проверялся на нахождение в правильном контексте, но проверяется при создании в .NET Framework 4.5 или более поздних версиях. Хотя маловероятно, что это приведет к серьезным проблемам, проверки путей к затронутому коду должно быть достаточно для определения проблемы.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Ограничение отмены по умолчанию для текстового поля WPF равно 100

Сведения

В .NET Framework 4.5 ограничение отмены по умолчанию для текстового поля WPF равно 100 (в отличие от неограниченного в .NET Framework 4.0)

Предложение

Если ограничение отмены, равное 100, слишком низкое, ограничение можно задать явным образом с помощью свойства UndoLimit

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Выделенный текст в элементе управления TextBox WPF будет отображаться другим цветом, если текстовое поле неактивно

Сведения

В .NET Framework 4.5, если элемент управления текстовым полем WPF неактивен (в нем отсутствует фокус), выбранный текст внутри поля будет отображаться цветом, отличным от того, когда элемент управления является активным.

Предложение

Чтобы восстановить прежнее поведение (.NET Framework 4.0), задайте для свойства AreInactiveSelectionHighlightBrushKeysSupported значение false.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

В TreeView необходимо использовать TreeViewItem WPF

Сведения

В версии 4.5 было представлено изменение, которое ограничивает использование элементов System.Windows.Controls.TreeViewItem за пределами System.Windows.Controls.TreeView. Это происходит в следующих случаях.

Другими словами, это происходит в том случае, когда System.Windows.Controls.TreeViewItem используется вне System.Windows.Controls.TreeView и пользователь щелкает потомка System.Windows.Controls.TreeViewItem, чтобы сделать его видимым. Проблема никогда не возникнет, если у System.Windows.Controls.TreeViewItem отсутствуют имеющие фокус потомки. Пример такой ситуации — System.Windows.Controls.TreeViewItem является корнем DataTemplate. При возникновении этой проблемы создается исключение InvalidCastException в рамках платформы WPF.

Предложение

Будет создано исправление для этой ошибки.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Windows Workflow Foundation (WF)

System.Activities теперь является атрибутом APTCA

Сведения

Сборка помечена атрибутом System.Security.AllowPartiallyTrustedCallersAttribute.

Предложение

Производные классы не могут быть помечены атрибутом System.Security.SecurityCriticalAttribute. Раньше производные типы должны были быть помечены атрибутом System.Security.SecurityCriticalAttribute. Однако это изменение не должно иметь никаких реальных последствий.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Теперь WF сериализует Expressions.Literal<T> DateTimes по-другому (нарушает работу пользовательских средств синтаксического анализа XAML)

Сведения

Связанный объект ValueSerializer преобразует объект System.DateTime или System.DateTimeOffset, компоненты Second и System.DateTime.Millisecond которого не равны нулю и (для значения System.DateTime) свойство Kind которого не равно Unspecified, в синтаксис элемента свойства вместо строки. Это изменение позволяет передавать значения System.DateTime и System.DateTimeOffset в оба конца. Пользовательские средства синтаксического анализа XAML, в которых предполагается, что входные данные XAML имеют синтаксис атрибутов, не будут работать правильно.

Предложение

Это изменение позволяет передавать значения System.DateTime и System.DateTimeOffset в оба конца. Пользовательские средства синтаксического анализа XAML, в которых предполагается, что входные данные XAML имеют синтаксис атрибутов, не будут работать правильно.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

XML, XSLT

Свойство XmlSchemaException теперь правильно задает позиции строк

Сведения

Если значение SetLineInfo передается методу Load и возникает ошибка проверки, свойства LineNumber и LinePosition теперь содержат сведения о строке.

Предложение

Код обработки исключений, который предполагает, что свойства LineNumber и LinePosition не будут задаваться, необходимо обновить, поскольку эти свойства теперь задаются правильно при использовании SetLineInfo во время загрузки XML.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Развертывание сущностей DTD XmlTextReader не может превышать 10 000 000 символов

Сведения

Развертывание сущностей DTD теперь не может превышать 10 000 000 символов. Загрузка XML-файлов без развертывания сущностей DTD или с ограниченным развертыванием сущностей DTD не изменяется. Файлы с сущностями DTD, которые развертываются до более чем 10 000 000 символов, не загружаются и теперь вызывают исключение.

Предложение

Если ограничение развертывания сущностей DTD существенно ниже 10 000 000, значение может быть переопределено с помощью свойства MaxCharactersFromEntities. С System.Xml.XmlReaderSettings правильным System.Xml.XmlReaderSettings.MaxCharactersFromEntities значением можно передать в XmlReader.Create это действие System.Xml.XmlReaderSettings (т. е. Create(String, XmlReaderSettings))

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Теперь обеспечивается прямая совместимость с XSLT

Сведения

В .NET Framework 4 XSLT 1.0 имелись следующие проблемы с прямой совместимостью:

  • Загрузка таблицы стилей завершалась сбоем, если ее версия была установлена равной 2.0, и средство синтаксического анализа обнаруживало нераспознанную конструкцию XSLT 1.0.
  • Конструкция xsl:sort не может отсортировать данные, если для версии таблицы стилей задано значение 1.1. На платформе .NET Framework 4.5 эти проблемы исправлены, а режим прямой совместимости XSLT 1.0 работает правильно.

Предложение

Эта проблема не затрагивает большинство приложений, однако в некоторых случаях сортировка данных теперь будет выполняться по-другому с учетом конструкции xsl:sort. Если в таблицах стилей версии 1.1 используется конструкция xsl:sort, убедитесь, что приложения не зависят от порядка данных без сортировки. Если приложения зависят от параметров сортировки версии 4.0, удалите конструкцию xsl:sort из таблицы стилей.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Изменено сообщение об исключении таблицы стилей XSLT

Сведения

В платформа .NET Framework 4.5 текст сообщения об ошибке, когда XSLT-файл слишком сложный: "Таблица стилей слишком сложна". В предыдущих версиях сообщение об ошибке было "Ошибка компиляции XSLT". Код приложения, который зависит от текста сообщения об ошибке, больше не будет работать. Однако типы исключений остаются теми же, поэтому это изменение не должно иметь никаких реальных последствий.

Предложение

Обновите код приложения, зависящий от сообщения об исключении из этого условия ошибки, для ожидания нового сообщения или (что еще лучше) обновите код так, чтобы он зависел только от типа исключения (System.Xml.Xsl.XsltException), который не изменился.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

.NET Framework 4.5.1

ADO.NET

ADO.NET теперь пытается автоматически восстановить прерванное соединение SQL

Сведения

Начиная с .NET Framework 4.5.1 .NET Framework будет пытаться автоматически восстанавливать прерванные соединения SQL. Хотя это повысит надежность приложений, существуют крайние случаи, в которых приложению должно быть известно, что соединение было потеряно, чтобы можно было выполнить определенное действие после восстановления подключения.

Предложение

Если эта функция нежелательна из-за проблем совместимости, ее можно отключить, установив для свойства System.Data.SqlClient.SqlConnectionStringBuilder.ConnectRetryCount строки соединения (или System.Data.SqlClient.SqlConnectionStringBuilder) значение 0.

Имя. Значение
Область Microsoft Edge
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Основные сведения

Объект ConcurrentDictionary, сериализованный в .NET Framework 4.5 с помощью NetDataContractSerializer, нельзя десериализовать в .NET Framework 4.5.1 или 4.5.2

Сведения

Из-за внутренних изменений типа объекты ConcurrentDictionary<TKey,TValue>, сериализованные в .NET Framework 4.5 с помощью System.Runtime.Serialization.NetDataContractSerializer, не могут быть десериализованы в .NET Framework 4.5.1 или .NET Framework 4.5.2. Обратите внимание, что сериализация в .NET Framework 4.5.x с последующей десериализацией в .NET Framework 4.5 будет работать нормально. Аналогичным образом, сериализация в версиях 4.x работает в .NET Framework 4.6. Сериализация и десериализация в одной версии платформы .NET Framework не затрагивается.

Предложение

Если необходимо сериализовать и десериализировать System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue> между платформа .NET Framework 4.5 и платформа .NET Framework 4.5.1/4.5.2, то вместо него следует использовать System.Runtime.Serialization.NetDataContractSerializerдругой сериализаторSystem.Runtime.Serialization.DataContractSerializer. Кроме того, поскольку эта проблема была устранена в .NET Framework 4.6, она может быть решена путем обновления до этой версии платформы .NET Framework.

Имя. Значение
Область Незначительный
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

ConcurrentQueue<T>.TryPeek может возвращать ошибочные значения NULL в выходном параметре

Сведения

В некоторых сценариях с несколькими потоками System.Collections.Concurrent.ConcurrentQueue<T>.TryPeek(T) может возвращать значение true, но заполнять выходной параметр значением NULL (вместо правильного значения).

Предложение

Эта проблема решена в EntityFramework 4.5.1. Чтобы устранить проблему, выполните обновление до этой версии платформы.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

Профилировщики не перечисляют COR_PRF_GC_ROOT_HANDLE

Сведения

В .NET Framework 4.5.1 API профилирования RootReferences2() по ошибке никогда не возвращает COR_PRF_GC_ROOT_HANDLE (вместо этого возвращается COR_PRF_GC_ROOT_OTHER). Эта проблема решена в .NET Framework 4.6.

Предложение

Эта проблема была устранена в .NET Framework 4.6 и может быть решена путем обновления до этой версии платформы .NET Framework.

Имя. Значение
Область Незначительный
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Десериализация объектов между доменами приложений может завершиться сбоем

Сведения

В некоторых случаях, когда приложение использует два или большее количество доменов с разными базовыми папками приложения, при попытке выполнить десериализацию объектов в логическом контексте вызова между доменами приложения возникнет исключение.

Предложение

См. статью Устранение рисков: десериализация объектов между доменами приложений

Имя. Значение
Область Microsoft Edge
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

EventListener усекает строки с внедренными значениями NULL

Сведения

System.Diagnostics.Tracing.EventListener усекает строки с внедренными значениями NULL. Символы NULL не поддерживаются классом System.Diagnostics.Tracing.EventSource. Изменение влияет только на приложения, использующие System.Diagnostics.Tracing.EventListener для чтения данных System.Diagnostics.Tracing.EventSource в процессе и значения NULL в качестве разделителей.

Предложение

Если возможно, следует обновить данные System.Diagnostics.Tracing.EventSource, чтобы не использовать внедренные символы NULL.

Имя. Значение
Область Microsoft Edge
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Реализация EventSource.WriteEvent должна передавать WriteEvent те же параметры, которые она получила (плюс идентификатор)

Сведения

В среде выполнения теперь реализуется контракт, задающий следующее: класс, производный от System.Diagnostics.Tracing.EventSource и определяющий метод событий ETW, должен вызвать метод EventSource.WriteEvent базового класса с идентификатором события и теми же аргументами, с которыми был передан метод событий ETW.

Предложение

Возникает исключение System.IndexOutOfRangeException, если объект System.Diagnostics.Tracing.EventListener считывает данные System.Diagnostics.Tracing.EventSource в процессе для источника события, нарушающего контракт.

Имя. Значение
Область Незначительный
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Перегрузки Marshal.SizeOf и Marshal.PtrToStructure нарушают работу динамического кода

Сведения

Начиная с .NET Framework 4.5.1 динамическая привязка к методам SizeOf<T>(), SizeOf<T>(T), PtrToStructure(IntPtr, Object), PtrToStructure(IntPtr, Type), PtrToStructure<T>(IntPtr) или PtrToStructure<T>(IntPtr, T) (с помощью Windows PowerShell, IronPython или ключевого слова dynamic в C#) может привести к исключению MethodInvocationExceptions, так как были добавлены новые перегрузки этих методов, которые могут быть неоднозначными для обработчиков скриптов.

Предложение

Обновите скрипты для четкого указания используемой перегрузки. Обычно нужно явным образом привести параметры типа метода как Type. Дополнительные сведения и возможные решения этой проблемы см. по этой ссылке.

Имя. Значение
Область Незначительный
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Некоторые интерфейсы API .NET создают первый экземпляр (обрабатываемый) EntryPointNotFoundExceptions

Сведения

В .NET Framework 4.5 несколько методов .NET начали создавать первый экземпляр System.EntryPointNotFoundException. Эти исключения обрабатывались в .NET Framework, но могли нарушать работу службы автоматизации тестирования, которая не ожидала первых экземпляров исключений. Те же интерфейсы API препятствуют работе некоторых сценариев ApiVerifier, если включен тест HighVersionLie.

Предложение

Этой ошибки можно избежать путем обновления до .NET Framework 4.5.1. Кроме того, автоматизация тестирования может быть обновлена, чтобы не прерываться при исключениях первого шанса System.EntryPointNotFoundException .

Значение
Область применения Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Адаптеры потока WinRT больше не вызывают FlushAsync автоматически при закрытии

Сведения

В приложениях для магазина Windows адаптеры потока среды выполнения Windows больше не вызывают метод FlushAsync из метода Dispose.

Предложение

Это изменение должно быть прозрачным. Разработчики могут восстановить прежнее поведение, написав следующий код.

using (var stream = GetWindowsRuntimeStream() as Stream)
{
// do something
await stream.FlushAsync();
}
Имя. Значение
Область Прозрачный режим
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Data

ADO.NET теперь пытается автоматически восстановить прерванное соединение SQL

Сведения

Начиная с .NET Framework 4.5.1 .NET Framework будет пытаться автоматически восстанавливать прерванные соединения SQL. Хотя это повысит надежность приложений, существуют крайние случаи, в которых приложению должно быть известно, что соединение было потеряно, чтобы можно было выполнить определенное действие после восстановления подключения.

Предложение

Если эта функция нежелательна из-за проблем совместимости, ее можно отключить, установив для свойства System.Data.SqlClient.SqlConnectionStringBuilder.ConnectRetryCount строки соединения (или System.Data.SqlClient.SqlConnectionStringBuilder) значение 0.

Имя. Значение
Область Microsoft Edge
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Сериализация

NetDataContractSerializer не удается выполнить десериализацию ConcurrentDictionary, сериализованного с использованием другой версии .NET

Сведения

По своей структуре System.Runtime.Serialization.NetDataContractSerializer может использоваться только при использовании одних и тех же типов CLR на концах сериализации. Таким образом, не гарантируется, что объект, сериализованный в одной версии .NET Framework, может быть десериализован в другой версии платформы. Тип System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue> некорректно десериализуется в .NET Framework 4.5.1 или более поздней версии, если сериализация этого типа была выполнена в .NET Framework 4.5 или предшествующих версий.

Предложение

Эту проблему можно обойти несколькими способами:

Имя. Значение
Область Незначительный
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Windows Communication Foundation (WCF)

Параметр MinFreeMemoryPercentageToActiveService теперь учитывается

Сведения

Этот параметр задает минимальный объем памяти, который должен быть доступен на сервере перед активацией службы WCF. Он предназначен для предотвращения исключений System.OutOfMemoryException. В .NET Framework 4.5 этот параметр не оказывал никакого влияния. В .NET Framework 4.5.1 этот параметр уже используется.

Предложение

Исключение возникает, если объем свободной памяти на веб-сервере меньше процентного значения, заданного параметром конфигурации. Некоторые службы WCF, которые успешно запускались и выполнялись в условиях ограниченной памяти, теперь могут завершаться ошибкой.

Имя. Значение
Область Незначительный
Версия 4.5.1
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Windows Presentation Foundation (WPF)

Прокрутка WPF TreeView или сгруппированного ListBox в VirtualizingStackPanel может привести к остановке ответа приложения

Сведения

В платформа .NET Framework версии 4.5 прокрутка WPF System.Windows.Controls.TreeView на виртуализированной панели стека может привести к тому, что приложение перестанет отвечать на запросы, если в представлении есть поля (например, между элементами в System.Windows.Controls.TreeViewэлементе ItemsPresenter). Кроме того, в некоторых случаях элементы разных размеров в представлении могут привести к нестабильности даже при отсутствии полей.

Предложение

Этой ошибки можно избежать путем обновления до .NET Framework 4.5.1. Кроме того, можно удалить поля из коллекций представлений (таких как System.Windows.Controls.TreeView) на панелях виртуализированных стеков, если все содержащиеся в них элементы имеют одинаковый размер.

Имя. Значение
Область Основная
Версия 4,5
Тип Параметры выполнения

Затронутые API

.NET Framework 4.5.2

ASP.NET

ASP.NET MVC теперь экранирует пробелы в строках, переданных через параметры маршрута

Сведения

Чтобы соответствовать стандарту RFC 2396, пробелы в путях маршрута теперь экранируются при заполнении параметров действий из маршрута. Таким образом, в то время как /controller/action/some data ранее будет соответствовать маршруту /controller/action/{data} и предоставлять some data в качестве параметра данных, он будет предоставлять some%20data вместо этого.

Предложение

Код должен быть обновлен для неэкранирования строковых параметров из маршрута. Если необходим исходный URI, доступ к нему можно получить с помощью API RequestUri.OriginalString.

Имя. Значение
Область Незначительный
Версия 4.5.2
Тип Параметры выполнения

Затронутые API

Свойству EnableViewStateMac больше невозможно задавать значение false

Сведения

ASP.NET теперь не позволяет разработчикам указывать <pages enableViewStateMac=&quot;false&quot;/> или <@Page EnableViewStateMac=&quot;false&quot; %>. Код проверки подлинности сообщения (MAC) состояния просмотра теперь принудительно применяется для всех запросов со встроенным состоянием просмотра. Затрагиваются только те приложения, в которых для свойства EnableViewStateMac явно задано значение false.

Предложение

Следует считать, что свойство EnableViewStateMac имеет значение true, и возникающие ошибки MAC должны быть устранены (как описано в этом руководстве, содержащем несколько решений в зависимости от причины ошибки MAC).

Имя. Значение
Область Основная
Версия 4.5.2
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Профилирование приложений ASP.NET MVC4 может привести к неустранимой ошибке подсистемы выполнения

Сведения

Профилирование с использованием сборок NGEN /Profile может привести к сбою при запуске профилируемых приложений ASP.NET MVC4 с неустранимой ошибкой подсистемы выполнения

Предложение

Эта проблема решена в .NET Framework 4.5.2. Также можно избежать этой проблемы, указав COR_PRF_DISABLE_ALL_NGEN_IMAGES в маске события профилировщика.

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Data

SqlConnection.Open завершается ошибкой в Windows 7 при наличии базовых поставщиков услуг или многоуровневых поставщиков услуг Winsock, не относящихся к IFS

Сведения

Open() и OpenAsync(CancellationToken) завершаются сбоем в .NET Framework 4.5 в Windows 7 при наличии на компьютере базовых поставщиков услуг или многоуровневых поставщиков услуг Winsock, не относящихся к IFS. Чтобы определить, установлен ли базовый или многоуровневый поставщик услуг, не относящийся к IFS, выполните команду netsh WinSock Show Catalog и проверьте все возвращаемые ей элементы Winsock Catalog Provider Entry. Если в качестве значения флагов службы задано 0x20000 бит, поставщик использует маркеры IFS и будет работать правильно. Если флаг 0x20000 бит снят (значение не задано), это поставщик BSP или LSP, не относящийся к IFS.

Предложение

Это ошибка исправлена в .NET Framework 4.5.2, поэтому ее можно избежать путем обновления .NET Framework. Кроме того, ее можно избежать, удалив все установленные поставщики LSP Winsock, не относящиеся к IFS.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Entity Framework

EF более не создает исключения для представлений QueryView с определенными характеристиками

Сведения

Entity Framework больше не создает исключение System.StackOverflowException, если приложение выполняет запрос, включающий представление QueryView со свойством навигации 0..1, которое пытается включить связанные объекты в запрос. Например, это могло быть сделано путем вызова .Include(e =&gt; e.RelatedNavProp).

Предложение

Это изменение влияет только на код, использующий представления QueryView с отношениями 1-0..1 при выполнении запросов, вызывающих метод .Include. Эта функция повышает надежность и должна быть прозрачна почти для всех приложений. Тем не менее, если она вызывает непредвиденное поведение, ее можно отключить, добавив следующую запись в раздел <appSettings> файла конфигурации приложения:

<add key="EntityFramework_SimplifyUserSpecifiedViews" value="false" />
Имя. Значение
Область Microsoft Edge
Версия 4.5.2
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Согласие на прерывание для возврата от генерируемого в версии 4.5 кода SQL к более простому коду, генерируемому в версии 4.0

Сведения

Запросы, создающие операторы JOIN и содержащие вызов к операции ограничения без предварительного использования OrderBy, теперь создают более простой код SQL. После обновления до .NET Framework 4.5 эти запросы создают более сложный код SQL, чем предыдущие версии.

Предложение

По умолчанию эта функция выключена. Если Entity Framework создает лишние операторы JOIN, что ведет к ухудшению производительности, можно включить эту функцию, добавив следующую запись в раздел <appSettings> файла конфигурации приложения (app.config):

<add key="EntityFramework_SimplifyLimitOperations" value="true" />
Имя. Значение
Область Прозрачный режим
Версия 4.5.2
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

Windows Presentation Foundation (WPF)

Вызов метода DataGrid.CommitEdit из обработчика CellEditEnding удаляет фокус

Сведения

Вызов метода CommitEdit() из одного из обработчиков событий System.Windows.Controls.DataGridSystem.Windows.Controls.DataGrid.CellEditEnding приводит к потере фокуса для System.Windows.Controls.DataGrid.

Предложение

Это ошибка исправлена в .NET Framework 4.5.2, поэтому ее можно избежать путем обновления .NET Framework. Кроме того, ее можно избежать, явным образом повторно выбрав System.Windows.Controls.DataGrid после вызова System.Windows.Controls.DataGrid.CommitEdit().

Имя. Значение
Область Microsoft Edge
Версия 4,5
Тип Параметры выполнения

Затронутые API

Периодически не удается выполнить прокрутку до нижнего элемента в ItemsControls (таких как ListBox и DataGrid) при использовании пользовательских DataTemplates

Сведения

В некоторых случаях ошибка в .NET Framework 4.5 приводит к тому, что ItemsControls (например, System.Windows.Controls.ListBox, System.Windows.Controls.ComboBox, System.Windows.Controls.DataGrid и т. д.) не удается выполнить прокрутку до нижнего элемента при использовании пользовательских DataTemplates. Если попытка прокрутки предпринимается повторно (после прокрутки вверх), прокрутка будет работать.

Предложение

Эта проблема была устранена в .NET Framework 4.5.2 и может быть решена путем обновления до этой версии (или более поздней) платформы .NET Framework. Кроме того, пользователи по-прежнему могут перетаскивать полосы прокрутки к последним элементам в этих коллекциях, однако для успешного выполнения этой задачи это может потребоваться сделать дважды.

Имя. Значение
Область Незначительный
Версия 4,5
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

WPF создает процесс wisptis.exe, который может заблокировать мышь

Сведения

Проблема появилась в версии 4.5.2 — процесс wisptis.exe создается и блокирует мышь.

Предложение

Исправление этой проблемы доступно в сервисном выпуске платформы .NET Framework 4.5.2 (пакет исправлений 3026376) или через обновление до версии .NET Framework 4.6

Имя. Значение
Область Основная
Версия 4.5.2
Тип Параметры выполнения

Затронутые API

Невозможно обнаружить с помощью анализа API.

XML

Изменения синтаксического анализа языка XML

Имя. Значение
Область Незначительный
Версия 4.5.2
Тип Параметры выполнения

Сведения

По соображениям безопасности в API синтаксического анализа языка XML были внесены следующие изменения.

Примечание.

XmlReaderSettings используется всеми средствами синтаксического анализа XML, поэтому хотя это изменение помогает в случае XmlReader, оно также влияет на другие сценарии.

Предложение

Чтобы вернуться к предыдущему поведению, можно задать значение в реестре. Добавьте значение DWORD с именем EnableLegacyXmlSettings в раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\XML и задайте для него значение 1. Вместо этого можно также добавить значение реестра в куст HKEY_CURRENT_USER.

Затронутые API

Затрагиваются также все API XML, которые прямо или косвенно зависят от XmlResolver.