Как скомпилировать приложение.NET Core для Linux на компьютере с Windows
Я занимаюсь разработкой приложения.NET Core на компьютере с Windows 10 (с обновлением 3 для Visual Studio 2015 + Microsoft .NET Core 1.0.1 VS 2015 Tooling Preview 2), которое должно быть опубликовано на компьютере с Ubuntu 16. Для этого мне нужно перенести исходный код на конечный компьютер и скомпилировать его там, чтобы он работал. Например, я не могу скомпилировать код в Windows и запустить его в Linux. Вопрос: есть ли способ скомпилировать код на win-машине и запустить его на Linux?
4 ответа
Используя команду сборки dotnet, вы можете указать --runtime
флаг
-r|--runtime
Целевое время выполнения для сборки. Список идентификаторов времени выполнения (RID), которые вы можете использовать, см. В каталоге RID.
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
Для всех, кто сейчас видит, что это больше не работает, кажется, что после обновления 10 ноября 2020 года вам нужно указать файл проекта сейчас, поскольку ему больше не нравится использовать указанную среду выполнения в решении (.sln).
Здесь был поднят вопрос об этом (https://github.com/dotnet/sdk/issues/14281), но, очевидно, он не будет решен немедленно.
Итак, ранее, где это работало:
dotnet build --runtime ubuntu.xx.xx-x64
Сейчас ему нужно что-то вроде этого:
dotnet build ProjectName.csproj --runtime ubuntu.xx.xx-x64