原文链接: Deep-dive into .NET Core primitives: deps.json, runtimeconfig.json, and dll’s
作者: Nate McMaster
C#编译器(The C# Compiler)
C#的编译器可以将cs文件转换为dll文件, 即程序集文件。程序集文件是一个便携的可执行格式文件, 借助.NET Core,它可以运行在Windows, MacOS和Linux系统中。
在Windows系统中, .NET Core的编译器文件csc.dll存放在以下目录中
C:\Program Files\dotnet\sdk\[.NET Core 版本号]\Roslyn\bincore
笔者使用了2.1.400版本,所以编译器存放目录是C:\Program Files\dotnet\sdk\2.1.400\Roslyn\bincore
.NET Core编译器文件csc.dll
也是一个.NET Core应用程序,所以你可以使用dotnet
命令直接执行编译器
C:\test>dotnet C:\Program Files\dotnet\sdk\2.1.400\Roslyn\bincore\csc.dll --help
下面我们尝试手动编译一个cs文件。
首先我们先创建一个Program.cs
文件,内容如下:
/* Program.cs */
class Program
{
static void Main(string[] args)
=> System.Console.WriteLine("Hello World!");
}
然后我们使用命令行命令将其编译
C:\test>dotnet "C:\Program Files\dotnet\sdk\2.1.400\Roslyn\bincore\csc.dll"
-reference:"C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.1.0\ref\netcoreapp2.1\System.Runtime.dll"
-reference:"C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.1.0\ref\netcoreapp2.1\System.Console.dll"
-out:Program.dll
Program.cs
参数说明
"C:\Program Files\dotnet\sdk\2.1.400\Roslyn\bincore\csc.dll"
是编译器所在的路径-reference
参数表示编译中需要引用的dll, 该参数可以指定多个dll , 例子中我们引用了System.Runtime.dll和System.Console.dll-out
参数表示编译生成的dll路径Program.cs
表示编译的源文件地址
Program.cs
编译成功, Program.dll
生成完毕。
runtimeconfig.json
对于.NET Core应用程序来说runtimeconfig.json
是不可或缺的。它是用来配置运行时的。
如果缺少了这个文件,运行dll文件的时