如何从命令行 运行 Roslyn 而不是 csc.exe?
How to run Roslyn instead csc.exe from command line?
安装 VS 2015 后,从命令行 运行ning csc.exe 导致此消息显示到控制台:
This compiler is provided as part of the Microsoft (R) .NET Framework,
but only supports language versions up to C# 5, which is no longer the
latest version. For compilers that support newer versions of the C#
programming language, see
http://go.microsoft.com/fwlink/?LinkID=533240
link 重定向到位于 GitHub 的 Roslyn 存储库。
那么,是从命令行 运行 "compilers that support newer versions" (Roslyn) 的方法吗?
听起来你的路径基本上不合适。如果你打开 "Developer Command Prompt for VS2015" 你应该在你的路径的前面有 $ProgramFiles(x86)$\MSBuild.0\bin
- 那里的 csc.exe
是 Roslyn.
我怀疑你是 运行 c:\Windows\Microsoft.NET\Framework.0.30319
中的版本或类似版本 - 基本上是旧版本。
来自命令行的 Roslyn('cmd'),Windows 10 个场景示例:
(注:不需要Visual Studio安装,只需要安装.NET core)
打开 'cmd' 并创建文件夹“dotnet-csharp-tools”:
D:>mkdir "dotnet-csharp-tools"
导航到文件夹“dotnet-csharp-tools”:
D:>cd "dotnet-csharp-tools"
在文件夹“dotnet-csharp-tools”中下载 'nuget.exe' 最新版本来自:
检查 '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 安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform - 版本 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\tools\Roslyn472
从'File explorer'找到'csc.exe'(在当前文件夹'Roslyn472')。
使用名称 'csc-roslyn.exe' 复制 'csc.exe'(名称可以是任何名称)。
对于'Windows 10',打开:
'Edit system environment variables' -> 'System variables' ->
'path' -> 'Edit' -> 'New' ->
D:\dotnet-csharp-tools\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0\tools\Roslyn472
关闭并再次打开 'cmd'(命令提示符)。
此 'cmd' 需要重新启动,因为 'system environment variables' 已编辑。
通过运行命令检查'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 Vehicle.cs Car.cs Autoservice.cs
运行 来自 'cmd':
Autoservice.exe
结果应该是:
福特陶努斯,1971,福特
欧宝 Ascona, 1978, 欧宝
萨博 900, 1984, 萨博
安装 VS 2015 后,从命令行 运行ning csc.exe 导致此消息显示到控制台:
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
link 重定向到位于 GitHub 的 Roslyn 存储库。
那么,是从命令行 运行 "compilers that support newer versions" (Roslyn) 的方法吗?
听起来你的路径基本上不合适。如果你打开 "Developer Command Prompt for VS2015" 你应该在你的路径的前面有 $ProgramFiles(x86)$\MSBuild.0\bin
- 那里的 csc.exe
是 Roslyn.
我怀疑你是 运行 c:\Windows\Microsoft.NET\Framework.0.30319
中的版本或类似版本 - 基本上是旧版本。
来自命令行的 Roslyn('cmd'),Windows 10 个场景示例:
(注:不需要Visual Studio安装,只需要安装.NET core)
打开 'cmd' 并创建文件夹“dotnet-csharp-tools”:
D:>mkdir "dotnet-csharp-tools"
导航到文件夹“dotnet-csharp-tools”:
D:>cd "dotnet-csharp-tools"
在文件夹“dotnet-csharp-tools”中下载 'nuget.exe' 最新版本来自:
检查 '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 安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform - 版本 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\tools\Roslyn472
从'File explorer'找到'csc.exe'(在当前文件夹'Roslyn472')。 使用名称 'csc-roslyn.exe' 复制 'csc.exe'(名称可以是任何名称)。
对于'Windows 10',打开:
'Edit system environment variables' -> 'System variables' -> 'path' -> 'Edit' -> 'New' -> D:\dotnet-csharp-tools\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0\tools\Roslyn472
关闭并再次打开 'cmd'(命令提示符)。 此 'cmd' 需要重新启动,因为 'system environment variables' 已编辑。
通过运行命令检查'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 Vehicle.cs Car.cs Autoservice.cs
运行 来自 'cmd':
Autoservice.exe
结果应该是:
福特陶努斯,1971,福特
欧宝 Ascona, 1978, 欧宝
萨博 900, 1984, 萨博