Директива using позволяет использовать тип, определённый в пространстве имён, без указания полностью квалифицированного пространства имён для этого типа. Добавление глобального модификатора в директиву using означает, что use будет применён ко всем файлам компиляции (обычно к проекту). Директива глобального использования была добавлена в C# 10. Синтаксис:
Рекомендуемая практика — помещать глобальный импорт в отдельный файл (по одному для каждого проекта), например, он может быть назван:GlobalUsings.csФайл.
Официальное введение в документацию Microsoft:Вход по гиперссылке виден.
Мы помещаем пространство имён, на которое сталкивается Startup.cs, в GlobalUsings.cs-файл, не забывая добавить их перед использованиемГлобальныйКлючевые слова!! Код таков:
В этот момент компилятор сообщает об ошибке, что «функция глобальной с использованием команды недоступна в C# 8.0, пожалуйста, используйте версию языка 10.0 или новее», как показано на рисунке ниже:
В данном случае, возьмём проект ASP.NET Core 3.1, достаточно дважды кликнуть по проекту (файл .csproj) и добавить LangVersion в узел Project-> PropertyGroup, как показано на следующем рисунке:
Это предложение означает, что проект использует синтаксис C# 10 относительно версии на языке C#:Вход по гиперссылке виден.
Файл при этом не сообщается как ошибкаStartup.cs Пространство имён, на которое ссылается файл, засеяно, как показано на рисунке ниже:
Удаляем ссылки на Program.cs, Startup.cs, а затем перекомпилируем проект, как показано на изображении ниже:
использованиеILSpy_binaries_7.2.0.6702-preview2Полученный WebApplication1.dll файл декомпилируется, как показано на следующем изображении:
В стартовом файле всё ещё есть ссылки на использование, и GlobalUsings.cs не генерируется, поэтому глобальное использование — это просто синтаксис, что упрощает утомительную программную работу и значительно повышает эффективность работы.
.NET 6Неявные пространства имёнСсылки также достигаются с помощью глобальной функции использования.
В настоящее время добавлены различные стандартные пространства имён для разных типов SDK, и существующие из них следующие:
Для Microsoft.NET.Sdk стандартное пространство имён выглядит следующим образом:
Для Microsoft.NET.Sdk.Web:
Для Microsoft.NET.Sdk.Worker:
Если вы хотите отключить неявные ссылки на пространство имён, вы можете полностью отключить эту функцию через DisableImplicitNamespaceImports, следующим образом:
Если вы просто хотите отключить ссылки на Microsoft.NET.Sdk.Web, вы можете настроить DisableImplicitNamespaceImports_Web следующим образом:
Давайте создадим новый консольный проект на .NET 6.0 для тестирования, и весь проект состоит только Program.cs одном файле, как показано на рисунке ниже:
ConsoleApp1.csproj настроен следующим образом:
Где находится глобальная директива по использованию? Откройте каталог obj (в котором хранятся промежуточные временные файлы, созданные в процессе компиляции) и найдите его в каталоге Debug\net6.0ConsoleApp1.GlobalUsings.g.csФайл:
ConsoleApp1.GlobalUsings.g.cs файлы генерируются автоматически на основе параметров свойств ImplicitUsing проекта.
(Конец)
|