Visual studio как изменить версию языка

Andrey on .NET - Про C#, .NET, ASP.NET, Core, MVC, Azure, EF, IoC и другие умные слова - С выходом C# 7, компания Microsoft изменила режим выпуска новых версий языка C#. Теперь будут доступны минорные версии, которые расширяют функциональность. Использовать их или нет – решать разработчикам.

C# logoС выходом C# 7, компания Microsoft изменила подход к выпуску новых версий языка: стали доступны минорные версии, которые понемногу расширяют его возможности. Использовать их или ждать выхода следующей мажорной версии – решать самим разработчикам. Поэтому по умолчанию поддержка промежуточных версий выключена.

Visual Studio 2019.3 (версия 16.3)

С 3 обновлением Visual Studio 2019 стала доступна 8 версия языка C#, которая требует поддержку со стороны платформы. Поэтому Visual Studio 2019 стала автоматически выставлять доступную версию языка в зависимости от выбранной в качестве цели платформы.

  • .NET Framework (все версии) – C# 7.3
  • .NET Standard 2.0 и предыдущие – C# 7.3
  • .NET Standard 2.1 – C# 8
  • .NET Core 2.x и предыдущие – C# 7.3
  • .NET Core 3.x – C# 8
  • .NET 5 и новее – C# 9

При этом выбор версии языка в диалоге Advanced Build Setting отключен и дополнен поясняющим сообщением:

C# version auto select

Единственный способ изменить версию языка – самостоятельно установить её в настройках проекта. Для этого необходимо вручную отредактировать соответствующий файл .csproj, добавив в него или изменить значение следующего свойства:

<PropertyGroup>
    <LangVersion> версия языка </LangVersion>
</PropertyGroup>

Расположение этого свойства зависит файла проектка, который, в свою очередь, зависит от платформы на которую нацелен проект. Рассмотрим на примере установки 9 версии языка:

  • .NET Core / .NET Standard / .NET 5 и новее
<Project Sdk="Microsoft.NET.Sdk">
 
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <LangVersion>9.0</LangVersion>
  </PropertyGroup>
  
</Project>
  • .NET 4.8 и старше
<?xml version="1.0" encoding="utf-8"?>
  ...
  <PropertyGroup>
    ...
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    <LangVersion>9.0</LangVersion>
    ...
  </PropertyGroup>
  ...
  <Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
</Project>

В качестве номера версии можно использовать следующие значения:

  • номер необходимой версии языка в формате Major.Minor. Например: 9.0  – настраивает проект на использование указанной версии языка.
  • default – разрешает использовать последнюю доступную для платформы проекта мажорную версию.
  • latest – позволит использовать все новые минорные и мажорные версии, которые станут доступны для платформы проекта автоматически по мере их выхода.

Что лучше выбрать? То что больше подходит каждому разработчику или команде в зависимости от предпочтений и условий работы.

Обратите внимание, что Visual Studio создает свой вариант свойства для каждой конфигурации в.NET Framework проектах. Если оно уже было когда-то изменено через интерфейс Visual Studio, то в файле проекта будут несколько записей вида:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <LangVersion>7.0</LangVersion>
</PropertyGroup>

Visual Studio 2019 до 3 обновления и Visual Studio 2017

Для использования минорных версий языка c Visual Studio 2017 необходимо обновить ее до версии 15.3 (Update 3) или выше. После этого появится возможность установить какая версия языка будет использоваться в проекте.

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

Свойства проекта

Чтобы открыть диалог с настройкой доступных версий, необходимо в свойствах проекта на закладке “Build” нажать на кнопку «Advanced…».

Project properties

Файл проекта .csproj

Аналогично описанию для Visual Studio 2019.3.

Код на новой версии языка

Последний вариант – просто написать код, который использует возможности новой версии. При этом Visual Studio сама предложит установить эту версию или вариант latest в качестве версии языка для проекта.

Visual Studio 2017 C# version selector

Добавлено 27 марта 2021 в 18:12

Поскольку доступно множество различных версий C++ (C++98, C++03, C++11, C++14, C++17 и т. д.), как ваш компилятор узнает, какую из них использовать? Как правило, компилятор выбирает стандарт по умолчанию (часто не самый последний стандарт языка). Если вы хотите использовать другой стандарт, вам необходимо изменить настройки вашей IDE/компилятора. Эти настройки применяются только к активному проекту. При создании нового проекта их необходимо установить заново.

Мы используем C++17. Если ваш компилятор не поддерживает C++17, вы не сможете полностью пройти все уроки, хотя с большинством из них у вас не будет проблем. Убедитесь, что вы используете последнюю версию компилятора, чтобы вы могли самостоятельно скомпилировать все примеры. В конце этого урока есть пример, который вы можете использовать, чтобы проверить, правильно ли вы настроили компилятор.

Кодовые названия для разрабатываемых стандартов языка C++

Обратите внимание, что стандарты языка C++ названы по годам, в которые они были приняты (например, C++ 17 был завершен в 2017 году).

Однако, когда идет согласование нового языкового стандарта, неясно, в каком году состоится его окончательная доработка. Следовательно, незавершенным языковым стандартам присваиваются кодовые названия, которые затем, после завершения стандарта, заменяются фактическими названиями. Например, C++11 во время разработки назывался c++1x. Вы по-прежнему можете встречать эти кодовые названия (особенно для будущей версии языкового стандарта, у которой еще нет окончательного названия).

Вот сопоставление кодовых названий с конечными названиями:

  • c++1x = C++11
  • c++1y = C++14
  • c++1z = C++17
  • c++2a = C++20

Например, если вы видите c++1z, это синоним стандарта языка C++17.

Настройка стандарта языка C++ в Visual Studio

На момент написания Visual Studio 2019 по умолчанию использует возможности C++14, что не позволяет использовать новые функции, представленные в C++17 (и C++20), некоторые из которых будут рассмотрены в будущих уроках.

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

Для этого откройте свой проект, затем перейдите в меню Проект (Project) → Свойства (Properties) (имя вашего приложения), затем откройте Свойства конфигурации (Configuration Properties) → C/C++Язык (Language).

Там вы можете установить стандарт языка C++ на ту версию C++, которую хотите использовать.

Рисунок 1 Выбор стандарта языка C++ в Visual Studio

Рисунок 1 – Выбор стандарта языка C++ в Visual Studio

На момент написания мы рекомендуем выбрать «Стандарт ISO C++17 (/std:c++17)» (ISO C++17 Standard (/std:c++17)), который является последним стабильным стандартом.

Если вы хотите поэкспериментировать с возможностями будущего языкового стандарта C++20, выберите «Предварительная версия – функции из последнего рабочего черновика C++ (/std:c++latest)» (ISO C++Latest (/std:c++latest)). Просто обратите внимание, что поддержка может быть нестабильной или глючной.

Настройка стандарта языка C++ в Code::Blocks

Code::Blocks может по умолчанию использовать языковой стандарт до C++11. Обязательно проверьте и убедитесь, что включен более современный языковой стандарт.

Хорошая новость заключается в том, что Code::Blocks позволяет установить языковой стандарт глобально, поэтому вы можете настроить его один раз (а не для каждого проекта). Для этого перейдите в меню Settings (Настройки) → Compiler (Компилятор):

Рисунок 2 Переход к настройкам компилятора в Code::Blocks

Рисунок 2 – Переход к настройкам компилятора в Code::Blocks

Затем найдите поле или поля с надписью «Have g++ follow the C++XX ISO C++ language standard [-std=c++XX]», где XX – это 11, 14 или другое большее число (смотрите элементы внутри прямоугольников на скриншоте ниже):

Рисунок 3 Настройка стандарта языка C++ в Code::Blocks

Рисунок 3 – Настройка стандарта языка C++ в Code::Blocks

Отметьте тот, у которого наибольшее число (на изображении выше это вариант C++17 внутри синего прямоугольника).

Ваша версия Code::Blocks может также поддерживать будущие (или только что выпущенные) версии C++. Если это так, они будут помечены как «Have g++ follow the coming C++XX (aka C++YY) ISO C++ language standard [-std=c++XX]» (синий прямоугольник на скриншоте ниже). При желании вы можете включить их, если хотите использовать функции, добавленные в этих версиях, но обратите внимание, что поддержка может быть неполной (т.е. некоторые функции могут отсутствовать).

Рисунок 4 Стандарт C++17, когда он еще не был принят, т.е. c++1z, в Code::Blocks

Рисунок 4 – Стандарт C++17, когда он еще не был принят, т.е. c++1z, в Code::Blocks

Смотрите список в верхней части статьи, где приведен список кодовых названий, соответствующих языковым стандартам.

Например, если вы хотите включить возможности C++17, а в ваших настройках нет параметра C++17, найдите -std=c++1z (кодовое название для C++17).

Кроме того, вы можете перейти на вкладку «Other Compiler Options» (Другие параметры компилятора) и ввести -std=c++17.

Рисунок 5 Выбор стандарта языка в Code::Blocks с помощью флага компилятора

Рисунок 5 – Выбор стандарта языка в Code::Blocks с помощью флага компилятора

Примечание


Это будет работать, если ваш компилятор поддерживает C++17. Если вы используете старую версию Code::Blocks, и функции C++17 не работают, обновите компилятор.

Установка языкового стандарта в g++

Для GCC/G++ вы можете передать флаги компилятора -std=c++11, -std=c++14, -std=c++17 или -std=c++2a, чтобы включить C++11/14/17/2a соответственно.

Тестирование вашего компилятора

После включения C++17 или выше вы сможете скомпилировать следующий код без каких-либо предупреждений или ошибок.

#include <array>
#include <iostream>
#include <string_view>
#include <tuple>
#include <type_traits>
 
namespace a::b::c
{
    inline constexpr std::string_view str{ "hello" };
}
 
template <class... T>
std::tuple<std::size_t, std::common_type_t<T...>> sum(T... args)
{
    return { sizeof...(T), (args + ...) };
}
 
int main()
{
    auto [iNumbers, iSum]{ sum(1, 2, 3) };
    std::cout << a::b::c::str << ' ' << iNumbers << ' ' << iSum << 'n';
 
    std::array arr{ 1, 2, 3 };
 
    std::cout << std::size(arr) << 'n';
 
    return 0;
}

Если вы не можете скомпилировать этот код, то вы либо не включили C++17, либо ваш компилятор не полностью его поддерживает. В последнем случае установите последнюю версию вашей IDE/компилятора, как описано в уроке «0.6 – Интегрированная среда разработки (IDE)».

Теги

C++ / CppCode::BlocksIDELearnCppVisual StudioДля начинающихКомпиляторОбучениеПрограммированиеСтандарт

Visual Studio Code ships by default with English as the display language and other languages rely on Language Pack extensions available from the Marketplace.

VS Code detects the operating system’s UI language and will prompt you to install the appropriate Language Pack, if available on the Marketplace. Below is an example recommending a Simplified Chinese Language Pack:

Language Pack recommendation

After installing the Language Pack extension and following the prompt to restart, VS Code will use the Language Pack matching your operating system’s UI language.

Note: This topic explains how to change the display language in the VS Code UI via Language Packs such as French or Chinese. If you want to add programming language support, for example for C++ or Java, refer to the Programming Languages section of the documentation.

Changing the Display Language

You can also override the default UI language by explicitly setting the VS Code display language using the Configure Display Language command.

Press ⇧⌘P (Windows, Linux Ctrl+Shift+P) to bring up the Command Palette then start typing «display» to filter and display the Configure Display Language command.

configure display language command

Press Enter and a list of installed languages by locale is displayed, with the current locale highlighted.

installed languages list

Use the Install additional languages… option to install more Language Packs from the Marketplace, or select a different locale from the list. Changing the locale requires a restart of VS Code. You will be prompted to restart when you select a locale.

The Configure Display Language command writes to the Runtime Configuration Arguments file argv.json in your user VS Code folder (.vscode).

The locale can also be changed by editing the argv.json file directly (Preferences: Configure Runtime Arguments) and restarting VS Code.

Available locales

Display Language Locale
English (US) en
Simplified Chinese zh-cn
Traditional Chinese zh-tw
French fr
German de
Italian it
Spanish es
Japanese ja
Korean ko
Russian ru
Portuguese (Brazil) pt-br
Turkish tr
Polish pl
Czech cs

Marketplace Language Packs

As described above, VS Code ships with English as the default display language, but other languages are available through Marketplace Language Packs.

You can search for Language Packs in the Extensions view (⇧⌘X (Windows, Linux Ctrl+Shift+X)) by typing the language you are looking for along with category:"Language Packs".

German Language Pack

You can have multiple Language Packs installed and select the current display language with the Configure Display Language command.

Setting the Language

If you want to use a specific language for a VS Code session, you can use the command-line switch --locale to specify a locale when you launch VS Code.

Below is an example of using the --locale command-line switch to set the VS Code display language to French:

code . --locale=fr

Note: You must have the appropriate Language Pack installed for the language you specify with the command-line switch. If the matching Language Pack is not installed, VS Code will display English.

Common questions

Unable to write to file because the file is dirty

This notification may mean that your argv.json file wasn’t saved after a previous change. Check if there are any errors in the file (Preferences: Configure Runtime Arguments), make sure the file is saved, and try to install the Language Pack again.

Can I contribute to a language pack’s translations?

Yes, the Visual Studio Code Community Localization Project is open to anyone, where contributors can provide new translations, vote on existing translations, or suggest process improvements.

How can I enable a programming language like Python?

Refer to the Programming Languages section to learn how to install support for programming languages, such as PHP, Python, and Java.

2/2/2023

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

По мере изучения основ C# я пробую также переписать один из моих проектов с Delphi на C#.  Пишу я пока без всяких изысков вроде визуального интерфейса, так как программа хоть и большая, но максимум, что пока от неё требуется — это собрать csv-файл из рассчитанных данных и визуализировать кое-какие моменты работы в Google Earth при помощи kml-файла. Когда я писал часть про логические операции, то мне понравилось использование выражения switch вместо одноименной конструкции — коротко,  понятно и лаконично.  Однако , эта  возможность доступна для использования только с версии  C# 8.0, а у меня приложение разрабатывалось на .NET Framework 4.7.2 и C# 7.3, соответственно. А так как кода было написано уже достаточно много, то пришлось думать над тем, как перенести моё консольное приложение с .NET Framework 4.7.2 на NET Core 3.1.

Смена версий языка C# в Visual Studio 2019 не работает

Первое, что я предпринял для того, чтобы как можно более безболезненно сменить C# 7.3 на C# 8.0 — это попробовал  изменить версию языка в Visual Studio. Судя по найденным на просторах Интернет инструкциям, делалось это через свойства проекта: надо было дважды кликнуть по Properties в обозревателе решений, затем, в открывшемся окне перейти на вкладку «Сборка», кликнуть кнопку «Дополнительно…» и, в открывшемся окне выбрать необходимую версию языка. Однако, в Visual Studio 2019 такой «фокус»не прошел:

Microsoft позаботился о том,  чтобы разместить под неактивным списком выбора версии C# пояснение того, почему на данный момент нельзя сменить версию языка. Судя по полученной информации, компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта, интерфейс смены версии C# теперь не работает, а новые функции C# 8.0 поддерживаются только на .NET Core 3.x. Так что, чтобы «пощупать» новинки в C# 8.0 пришлось искать вариант того, как быстро мигрировать с .NET Framework 4.7.2 на NET Core 3.1.

Вариант перехода с .NET Framework 4.7.2 на NET Core 3.1 нашелся относительно быстро на Хабре в блоге Microsoft (кто бы подумал), правда для консольного приложения пришлось его совсем чуточку доработать и добавить в этот вариант ещё один шаг. В конце этой статьи я приведу ссылку на первоисточник информации, чтобы соблюсти все правила цитирования.

Шаг 1. Запуск Portability Analyzer

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

Запускаем Portability Analyzer и указываем расположение исходного кода проекта:

Portability Analyzer

Portability Analyzer

После этого откроется файл Excel с отчётом по проверке. У меня этот файл выглядел следующим образом:

Portability Summary

Лист Portability Summary

Оказалось, что используемая в моем проекте сборка SharpKml не на все 100% поддерживается в .NET Standard 1.2, но для .NET Core 3.1 подходит. Значит всё хорошо, можно переходить к следующему шагу. Если бы анализатор показал меньше 100% совместимости с .NET Core 3.1, то пришлось бы искать либо другую версию SharpKml или же искать альтернативу.

Шаг 2. Миграция .csproj в SDK-стиле

В Обозревателе решений  необходимо кликнуть правой кнопкой мыши по своему проект и посмотреть есть ли в контекстном меню пункт «Изменить файл проекта». Вот так выглядит этот пункт в Visual Studio 2019:

А вот так будет выглядеть контекстное меню проекта без пункта:

Если пункт «Изменить файл проекта» имеется, то можно переходить к следующему шагу. Если же пункта нет, то делаем следующее:

  1. Смотрим, есть ли в проекта файл packages.config. В «Обозревателе решений» он выглядит вот так:

Если файл имеется, то кликаем на нем правой кнопкой мыши и выбираем пункт «Перенести packages.config в PackageReference…«:

Появится окно в котором необходимо нажать «Ok»

2. Выгружаем проект. Для этого кликаем по названию проекта правой кнопкой мыши и выбираем пункт «Выгрузить проект»

После выгрузки проект в «Обозревателе решений» будет выглядеть вот так:

Снова кликаем по названию проекта правой кнопкой мыши и выбираем пункт «Изменить название_проекта.cproj«. В моем случае этот пункт выглядел вот так:

Откроется XML-файл примерно такого содержания:

Содержимое этого файла необходимо скопировать в «Блокнот».  Теперь необходимо удалить всё из файла в Visual Studio. Согласен с автором первоисточника данной инструкции, что звучит такой пункт, мягко говоря, угрожающе. Но, на деле, ничего страшного не произойдет. Удаляйте — не переживайте (копия лежит в «Блокноте»).

Вместо только что удаленного текста вставьте следующий код необходимый для консольного приложения(здесь небольшое расхождение с первоисточником):

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>
</Project>

Теперь переходим в Блокнот и ищем там строку PackageReference. Если ничего не нашли — двигаемся дальше. Если нашли PackageReference, то копируем весь узел ItemGroup, содержащий PackageReference, в файл проекта, открытого в Visual Studio. Вставлять скопированный текст необходимо перед закрывающим тегом </Project>, а не в конец файла, как это было сказано в первоисточнике. Скопированный блок должен выглядеть так:

<ItemGroup>
    <PackageReference Include="SharpKml.Core">
        <Version>5.1.2</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.WindowsRuntime" Version="4.7.0" />
</ItemGroup>

У меня такой блок оказался всего один, поэтом итоговый файл *.cproj стал выглядеть вот так:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="SharpKml.Core">
            <Version>5.1.2</Version>
        </PackageReference>
    </ItemGroup>
</Project>

Теперь делаем то же самое, что и выше, но только для ProjectReference. Нашли  ProjectReference — копируем весь ItemGroup в конец файла перед закрывающим тегом </Project>. У меня в Блокноте таких строк не оказалось, поэтому я перешел к следующему шагу — сохраняем все и перезагружаем проект кликнув правой кнопкой мыши по названию проекта и выбрав пункт «Перезагрузить проект». Теперь наш проект в «Обозревателе решений» стал выглядеть немного по другому:

В принципе, на этом переход с .NET Framework 4.7.2 на NET Core 3.1 закончен — можно попробовать запустить проект и убедиться, что все работает. Однако у меня при попытке запуска приложения посыпались ошибки вида:

Ошибка CS0579 Повторяющийся атрибут «System.Reflection.AssemblyCompanyAttribute» ConsoleApp3 J:CSharp SourcesMrr2017_recoveryMrr2017ConsoleApp3objDebugnetcoreapp3.1ConsoleApp3.AssemblyInfo.cs

Помогло удаление файла AssemblyInfo.cs

То, что удаление файла AssemblyInfo.cs помогло мне — не значит, что поможет вам. Если не жалко проект — можете повторить мои действия, но лучше проконсультироваться со специалистами.

После этого проект запустился, работоспособность не нарушилась. Однако встретилась другая проблема.

Использование System.Windows в .NET Core

До перехода на .NET Core для работы с координатами точек, полигонами и так далее я использовал стандартные классы Windows из пространства имен System.Windows (добавив предварительно ссылку в Зависимости). Однако, в .NET Core Visual Studio «ругнулась» на то, что в этом пространстве имен классов типа Point и Rect не существует и пометила using System.Windows  серым цветом с предложением удалить неиспользуемые директивы:

Решение нашлось на StackOverflow. Для того, чтобы использовать стандартные примитивы из Windows типа Point и Rect для приложения на .NET Core 3.x необходимо установить пакет System.Runtime.WindowsRuntimeчерез менеджер пакетов NuGet. Для этого кликаем по названию проекта правой кнопкой мыши и выбираем пункт «Управление пакетами NuGet»

В окне менеджера пакетов переходим на вкладку «Обзор» и забиваем в строку поиска System.Runtime.WindowsRuntime.

Жмем кнопку установить и ждем пока NuGet установит пакет. После установки пакета проект в «Обозревателе решений» станет выглядеть вот так:

Теперь необходимо добавить в проект пространство имен:

using Windows.Foundation;

И можно пользоваться классами Point и Rect:

Вот так простое человеческое желание использовать в работе новейшие возможности языка C# привели к переносу проекта c .NET Framework 4.7.2 на NET Core 3.1. Надеюсь, что вам эта небольшая инструкция пригодиться.

Источники информации:

  1. Статья на Хабре: Перенос десктопных приложений на .NET Core
  2. StackOverflow: Using System.Windows in .NET Core

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

0 / 0 / 0

Регистрация: 17.08.2020

Сообщений: 1

1

17.08.2020, 18:53. Показов 31614. Ответов 2


Столкнулся с проблемой,что Visual Studio сам изменил версию языка ( или он дурит мне мозги ) , ранее эту проблему смог решить благодаря запуску чистого проекта и записи всего кода с нуля,но сейчас не помогло,если кто сталкивался с этой проблемой,то как вы ее решали?

Как поменять версию C# с 7.3 на 8.0?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Эксперт .NET

6270 / 3898 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

17.08.2020, 19:16

2

Версия языка зависит от типа проекта. Например в проектах .NET Framework вы не можете использовать версию выше 7.3. C# 8.0 поддерживается в проектах .NET Core 3.x и выше.



1



sanec38

Жесток & Наивен

481 / 186 / 91

Регистрация: 02.02.2017

Сообщений: 427

18.08.2020, 04:00

3

Редактируйте файл .csproj. добавляете туда.

XML
1
<LangVersion>preview</LangVersion>

или

XML
1
<LangVersion>8.0</LangVersion>

И статический локальный метод будет доступен и еще не которые фичи. Для остальных придется качать пакеты.Например для асинхронных потоков Microsoft.Bcl.AsyncInterfaces.Для index и range поищите в nuget rangeindex. И так далее.
Проверенно на версии студии 16.0 и выбранном .net framework 4.8.



3



Понравилась статья? Поделить с друзьями:
  • Visual studio как изменить версию net framework
  • Visual studio unicode error python
  • Visual studio stack overflow error
  • Vipnet ошибка открытия почтовой базы c program files infotecs vipnet client msarch
  • Vipnet ошибка инициализации транспортного каталога