Управление версиями языка C#
Компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта. Visual Studio не предоставляет пользовательский интерфейс для изменения этого значения, но его можно изменить, отредактировав файл CSPROJ. Выбор значения по умолчанию гарантирует, что вы используете последнюю версию языка, совместимую с вашей целевой платформой. Вы получите преимущество в виде доступа к последним функциям языка, совместимым с целевым объектом проекта. Этот вариант по умолчанию также гарантирует, что вы не будете использовать язык, который требует такие типы или поведение во время выполнения, которые недоступны в целевой платформе. Выбор более новой версии языка, чем значение по умолчанию, может усложнить диагностику ошибок во время компиляции и выполнения.
C# 12 поддерживается только в .NET 8 и более новых версиях. C# 11 поддерживается только в .NET 7 и более новых версиях. C# 10 поддерживается только в .NET 6 и более новых версиях.
Проверьте страницу совместимости платформы Visual Studio, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio. Ознакомьтесь со страницей совместимости Visual Studio для Mac платформы, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio для Mac. Проверьте страницу Mono для C# для совместимости Mono с версиями C# .
Defaults
Компилятор определяет значение по умолчанию на основе следующих правил:
| Назначение | Версия | Версия языка C# по умолчанию |
|---|---|---|
| .NET | 8.x | C# 12 |
| .NET | 7.x | C# 11 |
| .NET | 6.x | C# 10 |
| .NET | 5.x | C# 9.0 |
| .NET Core | 3.x | C# 8.0 |
| .NET Core | 2.x | C# 7.3 |
| .NET Standard | 2.1 | C# 8.0 |
| .NET Standard | 2.0 | C# 7.3 |
| .NET Standard | 1.x | C# 7.3 |
| .NET Framework | all | C# 7.3 |
Если проект предназначен для preview платформы с соответствующей версией языка предварительной версии, используется языковая версия предварительной версии. Вы можете использовать новейшие возможности в этой предварительной версии в любой среде, не затрагивая проекты, предназначенные для выпущенной версии .NET Core.
Новый шаблон проекта для Visual Studio 2017 добавил
Переопределите значение по умолчанию
Если необходимо явно указать версию C#, это можно сделать несколькими способами:
- Вручную изменить файл проекта.
- задание языковой версии для нескольких проектов в подкаталоге;
- Настройте параметр компилятора LangVersion.
Языковая версия в Visual Studio отображается на странице свойств проекта. На вкладке «Сборка » на панели «Дополнительно» отображается выбранная версия.
Чтобы узнать, какую версию языка вы используете в данный момент, поставьте #error version (с учетом регистра) в коде. Это позволяет компилятору вывести ошибку CS8304 с сообщением, содержащим сведения об используемой версии компилятора и текущей выбранной версии языка. Дополнительные сведения см. в статье #error (справочник по C#).
Изменение файла проекта
Версию языка можно задать в файле проекта. Например, если доступ к предварительной версии функций должен быть задан явным образом, можно добавить следующий элемент:
preview
Значение preview использует последнюю предварительную версию языка C#, которую поддерживает компилятор.
Настройка нескольких проектов
Чтобы настроить несколько проектов, можно создать файл Directory.Build.props , как правило, в каталоге решения, который содержит элемент. Добавьте следующий параметр в файл Directory.Build.props :
preview
Сборки во всех подкаталогах каталога, содержащего этот файл, теперь используют предварительную версию C#. Дополнительные сведения см. в статье Настройка сборки.
Справочник по версиям языка C#
В следующей таблице показаны все текущие версии языка C#. Старые компиляторы могут не понимать каждое значение. Если установить последний пакет SDK для .NET, у вас есть доступ ко всем перечисленным.
| Значение | Значение |
|---|---|
| preview | Компилятор допускает использование любого допустимого синтаксиса языка из последней предварительной версии. |
| latest | Компилятор принимает синтаксис из последней выпущенной версии компилятора (включая дополнительный номер версии). |
| latestMajor или default |
Компилятор принимает синтаксис из последней основной версии компилятора. |
| 12.0 | Компилятор принимает только синтаксис, включенный в C# 12 или ниже. |
| 11.0 | Компилятор принимает только синтаксис, включенный в C# 11 или ниже. |
| 10.0 | Компилятор принимает только синтаксис, включенный в спецификацию C# 10 или более ранних версий. |
| 9.0 | Компилятор принимает только синтаксис, включенный в спецификацию C# 9 или более ранних версий. |
| 8.0 | Компилятор принимает только синтаксис, включенный в спецификацию C# 8.0 или более ранней версии. |
| 7.3 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.3 или более ранней версии. |
| 7.2 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.2 или более ранней версии. |
| 7.1 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.1 или более ранней версии. |
| 7 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.0 или более ранней версии. |
| 6 | Компилятор принимает только синтаксис, включенный в спецификацию C# 6.0 или более ранней версии. |
| 5 | Компилятор принимает только синтаксис, включенный в спецификацию C# 5.0 или более ранней версии. |
| 4 | Компилятор принимает только синтаксис, включенный в спецификацию C# 4.0 или более ранней версии. |
| 3 | Компилятор принимает только синтаксис, включенный в спецификацию C# 3.0 или более ранней версии. |
| ISO-2 или 2 |
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2006 C# (2.0). |
| ISO-1 или 1 |
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2003 C# (1.0/1.2). |
Указание LangVersion со значением отличается от пропуска параметра LangVersion . default Указание default последней версии языка, который поддерживает компилятор, без учета целевой платформы. Например, создание проекта, предназначенного для .NET 6 из текущей версии Visual Studio 2022, использует C# 10, если LangVersion не указан, но использует C# 11, если LangVersion имеет значение default .
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
/std (Указание стандартной версии языка)
Включите поддерживаемые функции языка C и C++ из указанной версии стандарта языка C или C++.
Синтаксис
/std:c++14
/std:c++17
/std:c++20
/std:c++latest
/std:c11
/std:c17
/std:clatest
Замечания
Параметры /std доступны в Visual Studio 2017 и более поздних версиях. Они используются для управления стандартными функциями языка программирования ISO C или C++, включенными во время компиляции кода. Эти параметры позволяют отключить поддержку некоторых новых функций языка и библиотеки: те, которые могут нарушить существующий код, соответствующий определенной версии языкового стандарта.
Компилятор Microsoft C++ в Visual Studio 2017 и более поздних версиях не поддерживает режимы стандартов C++, предшествующие C++14 ( /std:c++14 ). Такая поддержка не планируется. В качестве несовершенного обходного решения можно использовать старые наборы инструментов компилятора Visual C++, которые не реализуют функции из более поздних стандартов. Дополнительные сведения об установке и использовании старых наборов инструментов компилятора в Visual Studio см. в статье «Использование собственного многонацеливания» в Visual Studio для создания старых проектов.
Поддержка стандартов C++
Параметр /std в действии _MSVC_LANG во время компиляции C++ можно обнаружить с помощью макроса препроцессора. Дополнительные сведения см. в статье Макросы препроцессора.
/std:c++14
Этот /std:c++14 параметр включает стандартные функции C++14, реализованные компилятором MSVC. Этот параметр используется по умолчанию для кода, скомпилированного как C++. Она доступна начиная с Visual Studio 2015 с обновлением 3.
Этот параметр отключает поддержку компилятора и стандартной библиотеки для функций, измененных или новых в более поздних версиях стандарта языка. Однако он не отключает некоторые функции C++17, уже реализованные в предыдущих выпусках компилятора MSVC. Дополнительные сведения см. в статье Соответствие стандартам языка Microsoft C/C++. Таблицы указывают, какие функции C++17 включены при указании /std:c++14 .
Следующие функции остаются включенными, если /std:c++14 указан параметр, чтобы избежать критических изменений для пользователей, которые уже приняли зависимости от функций, доступных в Visual Studio 2015 с обновлением 2 или до этого:
- Правила для auto скобок-init-lists
- typename в параметрах шаблона шаблона
- Удаление триграфов
- Атрибуты пространств имен и перечислителей
- Символьные литералы u8
/std:c++17
Этот /std:c++17 параметр включает стандартные функции и поведение C++17. Он включает полный набор функций C++17, реализованных компилятором MSVC. Этот параметр отключает поддержку компилятора и стандартной библиотеки для новых или измененных функций после C++17. Он специально отключает изменения после C++17 в стандарте C++ и версиях рабочего черновика. Он не отключает ретроактивные обновления дефектов стандарта C++. Этот параметр доступен начиная с Visual Studio 2017 версии 15.3.
В зависимости от версии или обновления компилятора MSVC функции C++17 могут быть не полностью реализованы или полностью соответствуют параметру /std:c++17 . Общие сведения о соответствии языка C++ в Visual C++ версии выпуска см. в статье о соответствии языка Microsoft C/C++.
/std:c++20
Этот /std:c++20 параметр включает стандартные функции и поведение C++20. Доступно начиная с Visual Studio 2019 версии 16.11, он включает полный набор функций C++20, реализованных компилятором MSVC, за исключением std::format расширений форматирования C++20 , а также фабрики диапазона и адаптеры диапазона из . Эти функции по-прежнему доступны только в /std:c++latest разделе .
Параметр /std:c++20 отключает поддержку компилятора и стандартной библиотеки для новых или измененных компонентов после C++20. Он специально отключает изменения после C++20 в стандарте C++ и версиях рабочего черновика. Он не отключает ретроактивные обновления дефектов стандарта C++.
/std:c++latest
Этот /std:c++latest параметр включает все реализованные в настоящее время функции компилятора и стандартной библиотеки, предлагаемые для следующего проекта стандарта, а также некоторые текущие и экспериментальные функции. Этот параметр доступен начиная с Visual Studio 2015 с обновлением 3.
В зависимости от версии или обновления компилятора MSVC, C++17, C++20 или предлагаемых функций C++23 могут быть не полностью реализованы или полностью соответствовать при указании /std:c++latest параметра. Мы рекомендуем использовать последнюю версию Visual Studio для обеспечения максимального соответствия стандартам. Общие сведения о соответствии языка И библиотеки C++ в Visual C++ по версии выпуска см. в статье о соответствии языка Microsoft C/C++.
В версиях Visual Studio 2019 до версии 16.11 /std:c++latest необходимо включить все функции компилятора и стандартной библиотеки C++20.
Список поддерживаемых функций языка и библиотеки см. в статье «Новые возможности для C++ в Visual Studio».
Параметр /std:c++latest не включает функции, защищенные параметром /experimental , но может потребоваться для их включения.
Функции компилятора и библиотеки, включенные в /std:c++latest будущем, могут появиться в будущем стандарте C++. Неутвержденные возможности предоставляются на условиях «как есть», могут удаляться без уведомления либо в них могут вноситься критические изменения.
Поддержка стандартов C
Вы можете вызвать компилятор Microsoft C с помощью /TC параметра или /Tc компилятора. Он используется по умолчанию для кода с .c расширением файла, если не переопределяется параметром или /Tp параметром /TP . Компилятор C по умолчанию (т. е. компилятор, когда /std:c11 или /std:c17 не указан) реализует ANSI C89, но включает несколько расширений Майкрософт, некоторые из которых являются частью ISO C99. Некоторые расширения Майкрософт в C89 могут быть отключены с помощью /Za параметра компилятора, но другие остаются в силе. Невозможно указать строгое соответствие C89. Компилятор не реализует несколько обязательных функций C99, поэтому невозможно указать соответствие C99.
/std:c11
Параметр /std:c11 включает соответствие ISO C11. Она доступна начиная с Visual Studio 2019 версии 16.8.
/std:c17
Параметр /std:c17 включает соответствие ISO C17. Она доступна начиная с Visual Studio 2019 версии 16.8.
Так как новый препроцессор необходим для поддержки этих стандартов, /std:c11 /std:c17 параметры компилятора задают этот /Zc:preprocessor параметр автоматически. Если вы хотите использовать традиционный (устаревший) препроцессор для C11 или C17, необходимо явно задать параметр компилятора /Zc:preprocessor- . /Zc:preprocessor- Установка параметра может привести к непредвиденному поведению и не рекомендуется.
Во время выпуска и до Visual Studio 2019 версии 16.10 библиотеки Windows SDK и UCRT, установленные Visual Studio, пока не поддерживают код C11 и C17. Требуется обновленная версия пакета SDK для Windows и UCRT. Дополнительные сведения и инструкции по установке см. в разделе «Установка C11 и C17» в Visual Studio.
При указании /std:c11 или /std:c17 MSVC поддерживает все функции C11 и C17, необходимые стандартам. /std:c17 Параметры /std:c11 компилятора обеспечивают поддержку этих функций:
В интегрированной среде разработки используются параметры C для IntelliSense и выделение кода, когда исходные файлы имеют .c расширение файла или при указании /TC параметра компилятора. /Tc В настоящее время IntelliSense в C выделяет ключевое слово _Alignas , _Alignof _Noreturn и _Static_assert , но не эквивалентные макросы, определенные в стандартных заголовках: alignas , alignof noreturn и static_assert .
Так как C17 в значительной степени является выпуском исправления ошибок ISO C11, поддержка MSVC для C11 уже включает все соответствующие отчеты о дефектах. Нет различий между версиями C11 и C17, за исключением макроса __STDC_VERSION__ . Он расширяется до 201112L C11 и 201710L для C17.
Компилятор не поддерживает большинство необязательных функций ISO C11. Некоторые из этих дополнительных функций C11 были обязательными функциями C99, которые MSVC не реализованы по архитектурным причинам. Макросы теста функций можно использовать для __STDC_NO_VLA__ обнаружения уровней поддержки компилятора для отдельных функций. Дополнительные сведения о предопределенных макросах C см. в разделе «Предопределенные макросы».
- Нет поддержки многопоточных, атомарных или сложных чисел.
- aligned_alloc Поддержка отсутствует из-за реализации кучи Windows. Альтернативой является использование _aligned_malloc .
- Поддержка отчета о дефектах 400 в настоящее время не поддерживается realloc , так как это изменение приведет к разрыву ABI.
- Поддержка массива переменной длины (VLA) не запланирована. VLA предоставляют векторы атак, аналогичные gets устаревшим и запланированным для удаления.
/std:clatest
Параметр /std:clatest ведет себя как /std:c++latest переключатель для компилятора C++. Этот коммутатор включает все реализованные в настоящее время функции компилятора и стандартной библиотеки, предлагаемые для следующего проекта стандарта C, а также некоторые текущие и экспериментальные функции.
Дополнительные сведения см. в разделе о функциях стандартной библиотеки C для соответствия языка Microsoft C/C++.
Установка данного параметра компилятора в среде разработки Visual Studio
- Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойств сборки в Visual Studio.
- Выберите страницу свойств>конфигурации C/C++>Language.
- В C++ Language Standard (или для C, C Language Standard) выберите языковой стандарт для поддержки из раскрывающегося списка, а затем нажмите кнопку «ОК» или » Применить«, чтобы сохранить изменения.
Изменение языка программирования шаблона формы
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке) .
Шаблон формы может содержать только сценарий или управляемый код, написанный на одном языке программирования. Изменение языка программирования шаблона формы удаление исходного скрипта или управляемого кода, указывающее новый язык программирования перезапись исходного скрипта или управляемый код в новый язык программирования, а затем снова добавить новый сценарий или управляемых код для шаблона формы.
Примечание: Не удается преобразовать существующий сценарий или управляемый код из одного языка программирования на другой язык программирования InfoPath.
В этой статье
- Общие сведения
- Изменение языка программирования шаблона формы
Обзор
Если вам нужно использовать для добавления бизнес-логики в шаблон формы, например выполнение сложных вычислений с использованием значения пользователи ввели в формах, основанных на шаблоне формы управляемый код или сценарий бизнес-логики можно добавить с помощью одного из нескольких различных языки программирования, включая C# или Microsoft Visual Basic. После добавления скрипта или управляемого кода для шаблона формы, то изменения, которые должны быть или любой новый сценарий или управляемый код, который вы хотите добавить в шаблон формы должны записываться в тот же язык программирования.
По мере развития шаблона формы к новым бизнес-требованиям, может потребоваться изменить язык программирования, используемый в шаблоне формы. Рассмотрим следующие ситуации:
- У вашей организации есть новую политику, использовать все программы Microsoft Windows и расширения программы разработанный вашего отдела на языке программирования C#. Существующих шаблонов форм, используемых в вашей компании, созданные с помощью языка программирования Visual Basic. В соответствии с новой политики, необходимо преобразовать все шаблоны форм, чтобы они использовали на языке программирования C#.
- Вы опубликовали шаблона формы в Microsoft Office InfoPath 2003, который содержит сценарий, написанный на JScript создана. Поскольку Microsoft Office InfoPath 2007 позволяет пользователям заполнять формы на основе шаблона формы в веб-браузере, необходимо преобразовать этот шаблон формы в шаблон формы с поддержкой браузера и затем опубликовать его на сервере под управлением InfoPath Forms Services. Тем не менее InfoPath Forms Services могут отображаться только шаблоны форм с сборки управляемого кода; не удается опубликовать шаблон формы, содержащей сценария на сервере под управлением InfoPath Forms Services. Сценарий необходимо преобразовать в сборку управляемого кода таким образом, вы можете опубликовать на сервере под управлением InfoPath Forms Services шаблона формы.
- Вы несете ответственность за поддержание нескольких шаблонов форм, которые не были структуру. Эти шаблоны форм содержащие сценарии на JScript. Несмотря на то, что можете читать и создавать сценарии на JScript, их более справляются с сценариями с помощью Microsoft Visual Basic Scripting Edition (VBScript) языка программирования. Поскольку будет поддерживать этих шаблонов форм, он будет гораздо эффективнее, если была написана сценария VBScript, поэтому вы решили заменить существующие сценарии, написанных на JScript с сценарии, написанные с помощью VBScript.
Если необходимо изменить язык программирования, используемый в существующий шаблон формы, необходимо сначала удалить существующий сценарий или управляемый код из шаблона формы, а затем укажите новый язык программирования шаблона формы. После изменения языка программирования шаблона формы, можно переписать сценария или управляемого кода на новом языке с помощью редактора скриптов Microsoft или Microsoft Visual Studio Tools для приложений, а затем добавить новый сценарий для шаблона формы.
Изменение языка программирования шаблона формы
Прежде чем менять язык программирования шаблона формы, вы можете сохранить копию исходного кода в текстовом редакторе, например Блокнот, в случае, если вам нужно ссылаться на него или с помощью исходного кода.
Сохранение исходного кода
- Откройте шаблон формы в режиме конструктора.
- В меню Сервис выберите пункт программирования и выполните одно из следующих действий:
- Если шаблон формы содержит сценарий, нажмите кнопку Microsoft Script Editor.
- Если шаблон формы содержит управляемый код, нажмите кнопку Microsoft Visual Studio Tools for Applications.
- В меню Правка Microsoft Script Editor или Microsoft Visual Studio Tools for Applications нажмите кнопку Выделить все.
- В меню Edit (Правка) выберите команду Copy (Копировать).
- Вставьте код, скопированный в текстовом редакторе, например в блокноте.
- Сохраните текстовый файл редактора.
Изменение языка программирования шаблона формы
- В меню Сервис выберите пункт Параметры формы.
- В разделе категории в диалоговом окне Параметры формы нажмите кнопку программирования.
- В разделе язык программирования нажмите кнопку Удалить код.
- Нажмите кнопку Да в поле сообщение, предупреждающее о том, что вы собираетесь удалить код из шаблона формы.
- В списке язык кода шаблона формы выберите язык, который вы хотите использовать в шаблоне формы.
Совет: При изменении языка программирования Visual Basic или C# в поле расположение проектов C# и Visual Basic введите расположение, где вы хотите сохранить файлы проектов.
Языковой пакет для русского языка для VS Code
Вы можете переопределить язык пользовательского интерфейса по умолчанию, явно задав язык отображения VS Code с помощью команды «Настроить язык отображения». Нажмите Ctrl + Shift + P (Command ⌘ + Shift ⇧ + P на Mac), чтобы открыть палитру команд, а затем начните вводить «отображен…» (“display”), чтобы отфильтровать команду «Настроить язык отображения» (“Configure Display Language”). Нажмите клавишу Ввод (Enter), и откроется список установленных языков по языковым стандартам, в котором будет выбран текущий языковой стандарт. Чтобы изменить язык пользовательского интерфейса, выберите другой языковой стандарт. Дополнительные сведения: Документация.
Участие
Чтобы отправить отзыв об улучшении перевода, создайте вопрос в репозитории vscode-loc. Строки перевода находятся на платформе локализации Майкрософт. Изменения можно внести только на ней, а затем экспортировать в репозиторий vscode-loc. Поэтому запросы на вытягивание в репозитории vscode-loc приниматься не будут.
Лицензия
На исходный код и строки распространяется лицензия MIT.
Благодарность
- Mikhail Zabaluev
- Ivan
- Svitlana Galianova
- Aleksey Nemiro
- sberbanker
- Nikita Gryzlov
- Veronika Kolesnikova
- Valeriy Schepak
- Kirill Moskvichev
- Alexander Filimonov
- Anton Afonin
- Serge Rodionov
- Артем Мельниченко
- Orrchy
- Roman
- Acupofspirt
- Артём Давыдов
- Andrei Makarov
- Romanenko Alexey
- Roman Sokolov
- Andrei Pryymak
Приятной работы!
Russian Language Pack for VS Code
Russian Language Pack provides localized UI experience for VS Code.
Usage
You can override the default UI language by explicitly setting the VS Code display language using the Configure Display Language command.
Press Ctrl+Shift+P to bring up the Command Palette then start typing display to filter and display the Configure Display Language command.
Press Enter and a list of installed languages by locale is displayed, with the current locale highlighted. Select another locale to switch UI language.
See Docs for more information.
Contributing
For feedback of translation improvement, please create Issue in vscode-loc repo.
The translation strings are maintained in Microsoft Localization Platform. Change can only be made in Microsoft Localization Platform then export to vscode-loc repo. So pull request won’t be accepted in vscode-loc repo.
License
The source code and strings are licensed under the MIT license.
Credits
Russian Language Pack had received contribution through «By the community, for the community» community localization effort.
Special thanks to community contributors for making it available.
Contributors:
- Mikhail Zabaluev
- Ivan
- Svitlana Galianova
- Aleksey Nemiro
- sberbanker
- Nikita Gryzlov
- Veronika Kolesnikova
- Valeriy Schepak
- Kirill Moskvichev
- Alexander Filimonov
- Anton Afonin
- Serge Rodionov
- Артем Мельниченко
- Orrchy
- Roman
- Acupofspirt
- Артём Давыдов
- Andrei Makarov
- Romanenko Alexey
- Roman Sokolov
- Andrei Pryymak
Enjoy!