如何在禁止上传.exe文件的共享主机上发布ASP.NET Core应用
ASP.NET Core 发布不生成.exe可执行文件解决方案
你之前了解的传统ASP.NET中「取消允许预编译站点可更新」的选项是.NET Framework框架下项目的专属配置逻辑,ASP.NET Core的编译发布体系已完全重构,没有对应UI勾选项,可通过以下两种方式实现需求:
方法1:Visual Studio 2019可视化发布配置
- 右键你的Razor Page项目,选择「发布」选项
- 首次发布先选择目标为「文件夹」,完成基础配置创建
- 点击发布配置页的「显示所有设置」,打开参数设置弹窗
- 「部署模式」选择 框架依赖(FDD)
- 「目标运行时」选择 可移植
- 取消勾选「生成单个文件」选项(若存在该配置项)
- 保存配置后重新发布,产物不会生成.exe文件
方法2:修改项目.csproj文件固定配置
如果不想每次发布都调整参数,可直接修改项目配置永久生效。打开项目根目录的.csproj文件,在<PropertyGroup>节点中添加如下两行配置:
<SelfContained>false</SelfContained> <UseAppHost>false</UseAppHost>
其中UseAppHost设为false会明确禁止编译器生成.exe格式的应用宿主文件,SelfContained设为false对应框架依赖模式,配置保存后所有发布操作都会自动跳过.exe生成。
发布结果校验
重新发布后检查输出文件夹,只会生成.dll程序集、json配置、web.config、静态资源和视图文件,无任何.exe后缀的可执行文件,符合共享主机的安全限制要求。部署时直接将所有产物上传到主机站点目录即可正常运行。
内容的提问来源于stack exchange,提问作者Ankit Jalan
相关产品推荐
相关产品推荐

