.NET Core 对于传统. NET 开发人员而言是既熟悉又陌生的新平台, 所以有时遇上出乎意料的事情也纯属正常情况. 这时只需点耐心, 多查查资料, 努力找到原因, 也未尝不是件有意义的体验.
比如当建完一个最简单的控制台应用程序:
dotnet new console -o helloRID
并完成编译后:
dotnet build
你在 bin 目录下会发现生成的程序集是 dll 文件, 而非之前经验里的 exe 文件.
再查下工程文件, 输出类型确实是 Exe.
是不是感到很意外?
固然, 我们也可以使用 dotnet run 的方式获得程序运行的结果, 但这样的文件格式绝不是用户所希望的, 他们没有办法直接运行该文件.
问题的缘由很容易借由搜索引擎找到 -- 在编译的时候需要额外指定 Runtime IDentifier(运行时标识).
Runtime IDentifier 的作用是指定应用程序运行时的目标平台. 这样就很容易理解了, 因为. NET Core 支持跨平台, 所以在编译时编译器默认并不知道你所想生成的可执行文件是需要在哪个平台上运行的, 只有你主动告诉它, 才能得到你想要的结果.
于是运行
dotnet build -r osx-x64
(假设你像我一样在 macOS 系统上运行程序), 可执行文件如预期般出现在 bin 目录的 osx-64 文件夹下.
如果是 Windows 10 系统, 则运行
dotnet build -r win10-x64
. 熟悉的 exe 文件再次出现.
更多的 Runtime IDentifier 可以在微软官网 https://docs.microsoft.com/en-us/dotnet/core/rid-catalog 上找到, 这里需要夸一下微软, 改进后的官方文档现在越来越好用了.
来源: https://www.cnblogs.com/kenwoo/p/9297120.html