Где находится C# компилятор последней версии?
Ребят, я тут хочу с помощью команды Console.WriteLine() вывести слово вместе с интерполяции строки.
О чём я имею виду:
Using System;
class Program
{
static void Main(string[] args)
{
string name = "Artem";
Console.WriteLine($"Hello, {name}!");
}
}
Всё работает если запустить проект через Microsoft Visual Studio. Также нормально компилирует Developer Prompt.
Но путь компилятора:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
пишет: Не предвиденный символ "$"
Какой компилятор использует Visual Studio и Developer Prompt, и где находится этот компилятор, скажите пж!
Мой
Microsoft Visual Studio 2019 Enterprise
P.s.: не пишите что нужен C# компилятор 6.0 или 5.0, я знаю. И также не пишите про путь
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
Спасибо!
Мой полный код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string name = "Artem";
Console.WriteLine($"Hello, {name}!");
Console.ReadKey();
}
}
}
Ответы (3 шт):
Следует различать .NET Framework и .NET Core . Версии .NET Framework 5.0 нет, последняя версия .NET Framework 4.8 , которая вышла в 2019г. Есть версия .NET Core 5, она в отличие от .NET Framework кроссплатформенная. Компилятора .NET Core нет, есть сама .NET Core по пути C:\Program Files\dotnet\dotnet.exe . Для создания консольного проекта в ней используется команда dotnet new console Для компиляции кода в C# можно воспользоваться командой C:\Program Files\dotnet\dotnet.exe run . Сама же .NET Core 5 лежит по пути C:\Program Files\dotnet\sdk\5.0.101.
Ответ на вопрос: Компилятора .Net версии 5.0 и.т.д нет.
Не уверен, что все еще актуально для автора, но корректный ответ все же нужен.
Нельзя путать версию компилятора и версию синтаксиса языка. Версия компилятора в вашем случае значения не имеет, а вот версия синтаксиса, судя по тексту вопроса, очень даже имеет, т.к. именно от версии синтаксиса зависит поддержка тех или иных конструкций языка в тексте компилируемой программы.
Для того чтобы указать конкретную версию синтаксиса компилятору, используется специальный ключ для консольного компилятора csc.exe: -langversion. В документации есть полный список доступных на данный момент версий синтаксиса, который также можно получить во встроенной справке самого компилятора по ключу /? или -?.
Учтите, что в стандартной поставке .NET Framework, компилятор умеет работать только с версиями синтаксиса C# до 5.0 включительно, для поддержки более новых версий, которые еще не стандартизованы, нужно будет более детально ознакомиться с документацией и добавить все необходимое, например компилятор Roslyn, или перейти с .NET Framework на .NET Core, возможно есть и другие варианты, глубоко не копал.
Либо оформить код в виде проекта, в нем указать версию синтаксиса и воспользоваться утилитой MSBuild.exe, которая также входит как в стандартную поставку .NET Framework (с большой вероятностью будет использовать компилятор из стандартной поставки), так и может быть установлена вместе с MS VisualStudio или пакетом SDK (будет использовать более актуальную версию из пакета SDK), может быть запущена из консоли и выполнит все необходимое в автоматическом режиме. Ей потребуется, в простейшем случае, только указать что собирать и куда складывать. Вариант с MSBuild мне кажется более простым, понятным, а потому более предпочтительным. Ну если конечно вашей целью не является изучение редко используемых возможностей компилятора, вроде модульных сборок и т.п.
В .NET Core ушли от одного предустановленного в системную компилятора, теперь каждый SDK включает в себя свою версию csc, с поддержкой соответствующей версии C#.
Путь к SDK можно получить вызовом
dotnet --list-sdks
CSC теперь идет в виде dll, которую нужно запускать вызовом dotnet.
Для SDK 5.0.100, например, полный вызов выглядит как
dotnet "C:\Program Files\dotnet\sdk\5.0.100\Roslyn\bincore\csc.dll"
Но лучше не дергать компилятор напрямую, а использовать build tools (тот же dotnet).