.NET6控制台程序默认生成apphost.exe,如何自定义可执行文件名?
.NET 6控制台项目构建后obj目录出现apphost.exe的问题解答
1. "apphost"名称的来源
在.NET Core及后续版本(包括.NET 5/6)的部署机制里,apphost.exe是原生引导程序的默认命名。和.NET Framework直接生成包含IL代码的可执行文件不同,.NET 6采用分层部署模式:
- 项目编译后会产出一个和项目同名的
.dll文件,里面是实际业务代码 apphost.exe是轻量的原生可执行文件,作用是加载.NET运行时环境,再启动你的.dll程序集- 构建过程中,这个引导程序会先临时生成在
obj目录作为中间产物;默认发布时它会被重命名为项目名称,但在构建的中间阶段(obj目录下)会保持apphost.exe这个默认名
2. 如何指定正确的exe名称
如果需要让obj目录或最终输出的可执行文件名称改为项目名称,可通过以下配置实现:
方法一:配置AssemblyName和TargetName
检查并修改你的.csproj文件,确保包含以下属性:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <!-- 设置你想要的可执行文件名称 --> <AssemblyName>YourProjectName</AssemblyName> <!-- 让输出文件名与AssemblyName保持一致 --> <TargetName>$(AssemblyName)</TargetName> </PropertyGroup> </Project>
OutputType必须设为Exe,确保项目是控制台可执行类型TargetName会控制构建全流程中生成的可执行文件名称,包括obj目录下的中间产物
方法二:直接指定AppHost名称
如果只想单独修改引导程序的名称,可添加AppHostExeName属性:
<PropertyGroup> <AppHostExeName>YourProjectName</AppHostExeName> </PropertyGroup>
这个属性会直接覆盖默认的apphost.exe命名,不管是obj目录的中间文件还是最终bin目录的输出文件,都会用你指定的名称
额外提示
obj目录是构建缓存目录,一般不需要关注其中的文件命名,最终可执行文件会生成在bin目录下(默认路径是bin/Debug/net6.0/YourProjectName.exe)- 如果之前修改属性后没生效,建议先清理项目(右键项目→清理)再重新构建,避免缓存干扰
内容的提问来源于stack exchange,提问作者stuwilmur
相关产品推荐
相关产品推荐

