Start Debugging

dotnet-10

103 статей · Страница2из11

Миграция Blazor-приложения с маршрутизируемыми компонентами в другой сборке с .NET 8 на .NET 10

Обновление Blazor Web App, страницы которого находятся в библиотеке классов Razor или в проекте .Client, с .NET 8 на .NET 10: что остаётся прежним (обе регистрации AdditionalAssemblies) и четыре вещи, которые ломаются, от 404 на blazor.web.js в тонких хостах до пустых страниц NotFoundPage. Замеры на ASP.NET Core 8.0.32 и 10.0.10.

Исправление: FileInfo.Length возвращает устаревший размер файла, в который ещё идёт запись, в Windows

FileInfo кеширует размер, перечисление читает лениво обновляемую запись каталога NTFS, а процесс записи может всё ещё держать байты в своих буферах. Используйте Refresh() или, лучше, читайте длину через общий дескриптор с помощью RandomAccess.GetLength.

Исправление: конфликт версий NU1608 / NU1107 между Pomelo.EntityFrameworkCore.MySql и EF Core 10

Pomelo 9.0.0 допускает только EF Core Relational 9.0.x, а сборки для EF Core 10 нет. Оставьте все пакеты EF Core на 9.0.x или перейдите на Microting.EntityFrameworkCore.MySql 10.0.x. Подавление предупреждения приводит к падению при запуске.

Fix: Settings file 'DotnetToolSettings.xml' was not found in the package

Пакет инструмента нацелен на более новую версию .NET, чем SDK, выполняющий установку, или вообще не является инструментом .NET. Используйте более новый SDK, зафиксируйте версию инструмента с подходящей папкой tools или принудительно задайте --framework.

Как отбросить буферизованные нажатия клавиш перед Console.ReadKey в игровом цикле консольного приложения на C#

Очищайте буфер ввода консоли с помощью while (Console.KeyAvailable) Console.ReadKey(true) перед ожиданием новой клавиши и делайте это в каждом кадре игрового цикла, чтобы автоповтор не копился. Как устроен буфер в Windows и Unix в .NET 10, почему зажатые клавиши отстают, ловушка с эхо в Unix и FlushConsoleInputBuffer.

Как проверить, отслеживается ли сущность в DbContext, перед её подключением в EF Core

Используйте DbSet.Local.FindEntry(key), чтобы спросить у трекера изменений, отслеживается ли сущность с заданным ключом, без обращения к базе данных и без перебора. Почему Entry(entity).State вводит в заблуждение, почему Find выполняет запрос, и проверенный помощник AttachOrMerge для EF Core 10.
2026-10-07 errorsdotnettesting

Исправление: dotnet test переключается на VSTest в Linux CI, хотя проект использует Microsoft.Testing.Platform

dotnet test выбирает раннер по global.json, который ищется вверх от рабочего каталога. В Linux CI он переключается на VSTest, если файла нет, он назван неверно, ключ написан в неправильном регистре или SDK старше 10.

Как добавить полный открытый ключ сборки со строгим именем в InternalsVisibleTo в проекте SDK-стиля

Подписанная сборка должна указывать дружественную сборку по полному открытому ключу из 320 символов, а не по токену, иначе сборка падает с CS1726 или CS0281. Получите ключ с помощью sn -p и sn -tp или кроссплатформенного скрипта на .NET, затем поместите его в метаданные Key элемента InternalsVisibleTo в .csproj. Также разобраны запасной вариант со свойством PublicKey, ключ DynamicProxyGenAssembly2 для Moq и ловушка с переносами строк.

Как отслеживать блокировку, разблокировку, вход и выход из сеанса Windows в приложении на C#

Используйте SystemEvents.SessionSwitch в настольном или консольном приложении, переопределите OnSessionChange в службе Windows или перехватывайте WM_WTSSESSION_CHANGE самостоятельно. Код на .NET 10 для всех трёх вариантов, скрытый поток '.NET System Events', почему служба видит вход в систему, а настольное приложение нет, уведомления не по порядку и как узнать текущее состояние блокировки через WTSQuerySessionInformation.

Как задать параметры сеанса PostgreSQL, такие как search_path или statement_timeout, для каждого подключения EF Core с Npgsql

Однократно выполненный SET стирается командой DISCARD ALL в тот момент, когда Npgsql возвращает подключение в пул. Передайте search_path и statement_timeout в стартовом пакете через ключевые слова строки подключения Search Path и Options, а при необходимости используйте ALTER ROLE или перехватчик ConnectionOpened, и узнайте, почему UsePhysicalConnectionInitializer молча теряет свой SET.
Назад Вперёд