Ну, это то, что я придумал.
Я решил написать это как собственный вопрос и ответ, поскольку технически это не ответ на вопрос «Как создать .Net Core Exe?»
Переносимое приложение .Net Core - это библиотека DLL, и вы запускаете ее с dotnet yourapp.dll
, если только это не автономное развертывание, в которомЕсли вы запускаете его с yourapp.exe
в Windows или ./yourapp
в Linux.
Этот метод не пытается решить или изменить его.
Документация для этого здесь: https://docs.microsoft.com/en-us/dotnet/core/deploying/index
Я учился тому, как поддерживать новое (.Net Core и Standard) и старое (.Net Framework) одновременно.
Теперь это стало действительно просто.
Вот самый маленький yourapp.csproj
файл для .Net SDK:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
</Project>
Это выплевывает yourapp.dll
Но, если вы измените его на:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp2.0;net451</TargetFrameworks>
</PropertyGroup>
</Project>
(обратите внимание на изменение с <TargetFramework>
на <TargetFrameworks>
!)
Теперь, когда вы строите, в выходном каталоге есть net451
и netcoreapp2.0
directories.В netcoreapp2.0
есть портативное приложение dll
.В net451
есть нормальная полноценная платформа, консоль exe
.
Очевидно, что она не переносимая, но и Windows exe, созданная другими методами.Если вам абсолютно необходим Windows EXE-файл, ориентированный на .net Core, используйте метод, приведенный в верхней части статьи.Конечно, вы можете использовать и то, и другое, что замечательно для узла TargetFrameworks
.
Вот вопрос StackOverflow, в котором содержится дополнительная информация о создании реальных EXE-файлов .Net Core:
VS2017Скомпилируйте NetCoreApp как EXE