如何在Visual Studio 2017中从.Net Core Console Application项目创建EXE输出?

时间:2018-12-18 17:04:29

标签: .net .net-core console-application

为什么当我在Visual Studio 2017中创建.Net Core Console Application项目时,它是否输出DLL而不是EXE?

好吧,我们知道答案了,并且它在StackOverflow上其他非常受欢迎的问题中得到了很好的记录和解决。

我对其他答案中跳跃的数量感到沮丧。

那么,有没有更简单的方法来生成exe?

1 个答案:

答案 0 :(得分:0)

好吧,这就是我的想法。

我决定将其写为自己的问题和答案,因为从技术上讲,这不是 问题的答案,“我如何创建.Net Core Exe?” < / em>

.Net Core便携式应用程序是DLL,并且您使用dotnet yourapp.dll启动它,除非它是一个独立的部署,在这种情况下,您可以在Windows或yourapp.exe上使用./yourapp启动它。在Linux上。

此方法不会尝试解决或更改它。

有关此文档,请参见:https://docs.microsoft.com/en-us/dotnet/core/deploying/index

我一直在学习如何同时支持新版本(.Net Core和Standard)和旧版本(.Net Framework)。

现在变得非常简单。

这是.Net SDK最小的yourapp.csproj文件:

<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目录。在netcoreapp2.0中有可移植的dll应用程序。在net451中有一个普通的完整框架控制台exe

显然,它不是可移植的,但其他方法也不创建Windows exe。如果您绝对需要针对.net Core的Windows exe,请使用本文顶部链接的方法。当然,您可以同时使用两者,这对TargetFrameworks节点来说是一件好事。

这是一个StackOverflow问题,其中包含有关创建真实的.Net Core EXE的更多信息:

VS2017 Compile NetCoreApp as EXE