dotnet build 之后,分别生成两个文件夹 net46 和 netcoreapp1.0,使用 ILDasm(见上一小节)工具,打开文件夹可以看到他们之间一个很重要的区别,使用.NET Framework 的应用程序编译之后为生成包含 IL 的 EXE 应用程序并且依赖mscorlib程序集 ,而使用.NET Core 的应用程序编译之后生成包含 IL 的DLL,依赖System.Console 和 System.Runtime 程序集。
最后,通过 dotnet run --framework net46 指定 famework 的版本为.NET Framework 4.6 查看运行结果。
除了 dotnet build 和 dotnet run 外,你还可以通过 CLI 打包(dotnet pack)和 发布(dotnet publish)应用程序。
dotnet pack 创建了一个 NuGet Package:
它是一个后缀名为 nupkg 的 Nuget Package,你可以将它改为.zip,解压查看里面的内容。
dotnet publish 发布一个可用于部署.NET 项目,你可以在 project.json 添加 runtime :
"runtimes" : { "ubuntu.14.04-x64": { }, "win7-x64": { }, "win10-x64": { }, "osx.10.10-x64": { }, "osx.10.11-x64": { } }
然后使用 dotnet restore 下载指定的 runtimes。当跨平台发布时,通过参数 -r 指定 runtime,比如 dotnet publish -r ubuntu.14.04-x64,最后将发布之后的文件夹(ubuntu.14.04-x64/publish)拷贝到指定 OS 就可以执行,无需安装 .NET Core 和 .NET Core SDK,只需安装.NET Core 依赖的 Libraries 即可。
小结
告别.NET 开发一年多,没想到发生了这么多不可思议的技术,抓紧时间补充一下。我招过人,也求过职,深切体会到国内.NET 的生态环境不给力,希望.NET Core 的出现能为我们指向一条明路,就像森林里一缕阳光,带来希望。