如何从命令行运行Roslyn代替csc.exe
本文关键字:代替 csc exe Roslyn 运行 命令行 | 更新日期: 2023-09-27 18:06:54
安装VS 2015后,从命令行运行csc.exe会导致控制台显示以下消息:
这个编译器是作为Microsoft (R) .NET框架的一部分提供的,但是只支持c# 5之前的语言版本,而c# 5已经不再是最新版本。对于支持新版本c#的编译器编程语言,参见http://go.microsoft.com/fwlink/?LinkID=533240
链接重定向到Roslyn在GitHub的仓库。
那么,是从命令行运行"支持新版本的编译器"(Roslyn)的一种方法吗?
听起来你的路径基本上是不合适的。如果你打开"VS2015的开发人员命令提示符",你应该在路径的早期有$ProgramFiles(x86)$'MSBuild'14.0'bin
-并且csc.exe
在那里是 Roslyn。
我怀疑你正在运行c:'Windows'Microsoft.NET'Framework'4.0.30319
或类似的版本-这是遗留的一个,基本上。
Roslyn from command line('cmd'), Windows 10场景示例:
(注意:不需要安装Visual Studio,只需要。net核心)
-
打开cmd,创建文件夹"dotnet-csharp-tools"
D:祝辞mkdir"dotnet-csharp-tools"
-
导航到文件夹"dotnet-csharp-tools";
D:在cd"dotnet-csharp-tools"
-
文件夹"dotnet-csharp-tools"下载'nuget.exe'最新版本:
https://www.nuget.org/downloads -
检查"Microsoft.CodeDom.Providers"最新版本的名称。DotNetCompilerPlatform":
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/例如:'Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0'
-
从'cmd'(打开文件夹"dotnet-csharp-tools"),运行命令:
D:'dotnet-csharp-tools>nuget install Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0
-
从'cmd'导航到'D:'dotnet-csharp-tools'Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0'tools'Roslyn472'(警告:文件夹名称'Roslyn472'可能不同,如果是其他版本)
D: ' dotnet-csharp-tools> cd Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0 '工具' Roslyn472
-
从"文件资源管理器"中找到"csc.exe"(在当前文件夹"Roslyn472"中)。复制名为"csc-roslyn.exe"的"csc.exe"(名称可以是任何名称)。
-
对于Windows 10,打开:
'编辑系统环境变量' ->'系统变量' ->"路径"→"编辑"→"新"→D: ' dotnet-csharp-tools ' Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0 '工具' Roslyn472
-
关闭并再次打开'cmd'(命令提示符)。这个'cmd'需要重新启动,因为'系统环境变量'被编辑了。
-
检查'csc-roslyn'是否被'cmd'识别:
csc-roslyn
-
创建文件夹'D:'csharp-projects'(文件夹名称可以是任何)并在'D:'csharp-projects'中创建c#源文件,例如:
Vehicle.cs
class Vehicle
{
private string name = "unknown";
private int producedYear = -1;
public Vehicle(string name, int producedYear)
{
this.Name = name;
this.ProducedYear = producedYear;
}
public string Name
{
get { return this.name; }
set { this.name = value; }
}
public int ProducedYear
{
get { return this.producedYear; }
set { this.producedYear = value; }
}
}
Car.cs
class Car : Vehicle
{
private string maker = "unknown";
public Car(string name, int age, string maker)
: base(name, age)
{
this.Maker = maker;
}
public string Maker
{
get { return this.maker; }
set { this.maker = value; }
}
public override string ToString()
{
return $"{this.Name}, {this.ProducedYear}, {this.Maker}";
}
}
Autoservice.cs
using System;
class Autoservice
{
public static void Main()
{
Car car1 = new Car("Ford Taunus", 1971, "Ford");
Car car2 = new Car("Opel Ascona", 1978, "Opel");
Car car3 = new Car("Saab 900", 1984, "Saab");
Console.WriteLine(car1);
Console.WriteLine(car2);
Console.WriteLine(car3);
}
}
从'cmd'(命令提示符)打开'D:'csharp-projects'并运行命令:
csc-roslyn/target:exe/out:Autoservice.exe vehicles .cs Car.cs Autoservice.cs
Run from 'cmd':
Autoservice.exe
结果应该是:
Ford Taunus, 1971, Ford
欧宝Ascona, 1978,欧宝
Saab 900, 1984, Saab
我怀疑Roslyn编译器的位置会根据你运行的Visual Studio而移动很多。
我可以通过执行如下搜索来找到我的:
cd "'Program Files (x86)"
dir /s csc*.* | findstr Roslyn
我的特定csc.exe位于:
C:'Program Files (x86)'Microsoft Visual Studio'2019'Community'MSBuild'Current'Bin'Roslyn'csc.exe