架构师_程序员_码农网

查看: 111|回复: 0

[资料] .NET Core 发布单文件路径问题

[复制链接]
发表于 2021-3-28 13:56:32 | 显示全部楼层
使用 .NET Core 3.1 发布单文件控制台应用,在 Linux 系统运行,程序代码主要做的事很简单,就是读取程序目录下的配置文件输出即可!但是将单文件发布到 Linux 下运行后,会提示找不到文件。

.NET Core 新功能发布单文件可执行文件
https://www.itsvse.com/thread-8273-1-1.html

【转】警惕 System.Environment.CurrentDirectory 获取当前目录
https://www.itsvse.com/thread-9464-1-1.html
测试代码:

输出如下:

AppDomain.CurrentDomain.SetupInformation.ApplicationBase:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Environment.CurrentDirectory:/root/test
AppDomain.CurrentDomain.BaseDirectory:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
QQ截图20210328135306.jpg

在将 .NET Core 应用发布成单文件的时候,在 CentOS 系统下运行,程序会自解压释放到 /var/tmp/.net/root/ 目录,然后,再去调用目录下释放后的程序,这也就能解释程序为什么找到不到配置文件的原因了。

解决方案

使用 System.Environment.CurrentDirectory 读取程序路径,System.Environment.CurrentDirectory 确实是获取当前目录没错,但是如果A程序调用B程序 B程序里使用了System.Environment.CurrentDirectory获取目录。那么这个B程序里获取的这个目录就不再是B的应用程序所在目录了;而变成了A所在的目录了。





上一篇:.NET Core Linux 报错:Couldn't find a valid ICU package installed...
下一篇:.NET Core 在 Linux 图片加水印问题
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2021-4-13 15:26

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表