当前位置: 首页 > 知识库问答 >
问题:

建筑NET核心控制台应用程序,以输出EXE

习胤运
2023-03-14

用于控制台应用程序项目目标。NETCore1.0,我不知道如何获得一个。exe在生成过程中输出。该项目在调试中运行良好。

我已经尝试过发布这个项目,但也不起作用。这是有意义的,因为EXE文件是特定于平台的,但必须有一种方法。我的搜索只找到了对旧版本的引用。使用project的NET核心版本。json。

每当我构建或发布时,这就是我得到的全部:

共有3个答案

丘畅
2023-03-14

以下内容将在输出目录中生成,

  • 所有包装参考资料
  • 输出组件
  • 引导exe

但它并不包含所有内容。NET核心运行时程序集。

<PropertyGroup>
  <Temp>$(SolutionDir)\packaging\</Temp>
</PropertyGroup>

<ItemGroup>
  <BootStrapFiles Include="$(Temp)hostpolicy.dll;$(Temp)$(ProjectName).exe;$(Temp)hostfxr.dll;"/>
</ItemGroup>

<Target Name="GenerateNetcoreExe"
        AfterTargets="Build"
        Condition="'$(IsNestedBuild)' != 'true'">
  <RemoveDir Directories="$(Temp)" />
  <Exec
    ConsoleToMSBuild="true"
    Command="dotnet build $(ProjectPath) -r win-x64 /p:CopyLocalLockFileAssemblies=false;IsNestedBuild=true --output $(Temp)" >
    <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
  </Exec>
  <Copy
    SourceFiles="@(BootStrapFiles)"
    DestinationFolder="$(OutputPath)"
  />

</Target>

我将其包装在一个样本中:https://github.com/SimonCropp/NetCoreConsole

洪增
2023-03-14

更新。网5!

以下规定适用于2020年11月1日/之后。NET5正式发布了。

(请参阅下面的“快速术语”部分,而不仅仅是“如何使用”部分)

  • 下载最新版本的. net 5 SDK。链接
  1. 打开一个终端(例如:bash、命令提示符、powershell),并将其放在与您的服务器相同的目录中。csproj文件输入以下命令:
dotnet publish --output "{any directory}" --runtime {runtime}
  --configuration {Debug|Release} -p:PublishSingleFile={true|false}
  -p:PublishTrimmed={true|false} --self-contained {true|false}

例子:

dotnet publish --output "c:/temp/myapp" --runtime win-x64 --configuration Release
  -p:PublishSingleFile=true -p:PublishTrimmed=true --self-contained true
  • 如果阅读NOV2020之前版本:Visual Studio预览版的最新版本*

*在以上两种情况下,最新的. net5 SDK将自动安装在您的电脑上。

输入任意文件夹位置,然后单击完成

点击发布

目标运行时
查看RID的列表

部署模式

  • 依赖于框架意味着一个小的。已生成exe文件,但假定为应用程序。Net 5安装在主机上
  • 自给自足意味着一个更大的市场。exe文件,因为。exe包含框架,但您可以运行。exe在任何机器上,不需要。Net 5将预安装。注意:使用自包含时,将生成其他依赖项(.dll),而不仅仅是。EXE

启用ReadyToRun编译
TLDR: it's。Net5相当于超前时间编译(AOT)。预编译为本机代码,应用程序通常会启动得更快。应用程序更高性能(或不!),取决于许多因素。更多信息在这里

修剪未使用的程序集
当设置为true时,dotnet将生成一个非常精简的小程序集。exe,只包含它需要的内容。这里要小心。示例:在应用程序中使用反射时,您可能不希望将此标志设置为true。

微软文档

皇甫敏达
2023-03-14

出于调试目的,您可以使用DLL文件。您可以使用dotnet ConsoleApp2.dll运行它。如果您想生成EXE文件,您必须生成一个独立的应用程序。

要生成自包含应用程序(Windows中的EXE),必须指定目标运行时(特定于目标操作系统)。

前期。仅限NETCore2.0:首先,在中添加目标运行时的运行时标识符。csproj文件(支持的RID列表):

<PropertyGroup>
    <RuntimeIdentifiers>win10-x64;ubuntu.16.10-x64</RuntimeIdentifiers>
</PropertyGroup>

以上步骤不再需要从开始。NET Core 2.0.

然后,在发布应用程序时设置所需的运行时:

dotnet publish -c Release -r win10-x64
dotnet publish -c Release -r ubuntu.16.10-x64
 类似资料:
  • 我试着把这个项目作为一个正常的参考。但是在重新构建解决方案之后,控制台应用程序仍然没有将.NET核心库作为参考。

  • ASP.NETCore支持一个新的配置系统,如下所示:https://docs.asp.net/en/latest/fundamentals/configuration.html 也支持这种模式吗?NET核心控制台应用程序? 如果不是,什么是替代以前的和模型?

  • 我正在尝试运行以下powerShell脚本,以便使用Fortify扫描我的解决方案(.NET Core 2.0): 在我的本地机器上一切都很好。 但当我试图在服务器上运行它作为TeamCity(TeamCity Enterprise 2018.2.1(build 61078))中的构建步骤时,我遇到了一个错误: 我在本地和服务器中使用相同版本的Fortify(Fortify静态代码分析器17.20

  • 问题内容: 我正在尝试在Docker容器中运行.net core 1.0.0控制台应用程序。 当我从计算机上的Demo文件夹中运行命令时,它可以正常工作;但是当使用运行时,容器会立即退出。 我试图检查日志,它只是显示Console.WriteLine中的文本: 演示应用正在运行… 没什么 我已经将项目上传到https://github.com/learningdockerandnetcore/De

  • 几个月前,我为控制台应用程序创建了第一个Dockerfile。这个控制台应用程序依赖于其他几个c#项目,因此它比您通常在互联网上找到的标准示例要复杂一些。Dockerfile“工作”,即我可以创建图像并运行容器。然而,我知道它有几个缺陷,现在是时候改进这个Dockerfile了。当前版本为 显然,需要解决文件的多次复制问题,但首先我想通过使用Alpine图像来减小图像大小。基于Microsoft示

  • 问题内容: 如果我有多个go例程,并且其中两个或两个以上例程决定需要打印某些内容,那么它们是否可能彼此中断? 例如: 是否有可能一个常规程序开始打印(),而另一个常规程序中断()和原始装订()? 我尝试自己运行它并检查输出,它 看起来 不错,但是如何确定? 问题答案: 是的,有可能,尽管GOMAXPROCS = 1不会显示任何内容。当使用更多goroutine,更大的行和更多的线程运行时,它们将显