如何在 Windows 机器上为 Linux 编译 .NET Core 应用程序

How to compile .NET Core app for Linux on a Windows machine

我正在 Windows 10 机器上开发 .NET Core 应用程序(使用 Visual Studio 2015 update 3 + Microsoft .NET Core 1.0.1 VS 2015 Tooling Preview 2)应该发布在 Ubuntu 16 机器上。为此,我必须将我的源代码移动到终端机器并在那里编译,以使其达到 运行。例如我无法在 windows 和 运行 上编译代码 linux。问题:有什么办法可以在 win 机器上编译代码并在 运行 linux 上编译代码?

使用dotnet build命令,您可以指定--runtime标志

-r|--runtime < RUNTIME_IDENTIFIER >

Target runtime to build for. For a list of Runtime Identifiers (RIDs) you can use, see the RID catalog.

代表具体操作系统的 RID 通常遵循这种模式 [os].[version]-[arch]

例如,要为 Ubuntu 16.04 运行时构建项目及其依赖项,请使用:

dotnet build --runtime ubuntu.16.04-x64
dotnet publish **path to your solution** --configuration Release --framework netcoreapp3.0 --output .**output path** --self-contained false --runtime linux-x64 --verbosity quiet

对于现在发现此功能不再起作用的任何人,从 2020 年 11 月 10 日的更新开始,您现在必须指定项目文件,因为它不喜欢在解决方案上使用指定的运行时 (. sln) 了。

这里提出了一个关于此的问题 (https://github.com/dotnet/sdk/issues/14281),但显然这不会立即得到解决。

所以以前这会起作用的地方:

dotnet build --runtime ubuntu.xx.xx-x64

它现在想要这样的东西:

dotnet build ProjectName.csproj --runtime ubuntu.xx.xx-x64

选项 1:命令行

dotnet build ProjectFile.csproj --runtime linux-x64

适用于 Linux、Windows 和 Mac。

选项 2:Visual Studio

如果愿意,您也可以在 Visual Studio 中“发布”您的应用。选择“文件系统”发布方法并设置此设置: