关于文件读取目录的问题

2020-12-13 22:00:36 +08:00
 zxCoder

项目中想要读取一些配置文件,路径应该怎么写啊,绝对路径不行,写相对路径的话,文件必须放到那个 bin 文件夹下深深的好几层。。。

怎么写这个路径才能让开发的时候和打包成可执行文件运行的时候就可以通用呢?

2124 次点击
所在节点    .NET
7 条回复
opengps
2020-12-13 22:26:34 +08:00
默认读取 debug 或者 release 最合适,因为这里就是发布后根目录,对于 appconfig 或者 webconfig 之外的,建议手动改文件属性为“始终复制”
之前整理过一份 web 和 form 通用的,看我博客第三部分: https://www.opengps.cn/Blog/View.aspx?id=415&from=v2ex
ysc3839
2020-12-13 23:18:28 +08:00
我自己开发的项目,配置文件是放在 exe 所在目录的,忽略当前目录。
beyondex
2020-12-13 23:21:09 +08:00
通过 AppDomain.CurrentDomain.BaseDirectory 获取程序的运行路径,或者
Web 程序通过 IHostEnvironument.WebContentRoot 获取。。
Jirajine
2020-12-14 00:16:35 +08:00
怎么不行了,绝对路径和相对路径都行。
绝对路径可以直接 /etc/(app name)/xx.conf,$HOME/.xx.conf,或者 xdg 那一套。
相对路径的话,可以取运行程序时的当前路径(不是 executable 所在的路径),并且允许用户指定。
zxCoder
2020-12-14 11:40:37 +08:00
@opengps
@ysc3839
@beyondex
@Jirajine

因为开发的时候配置文件要放到 bin/Debug 下面,然后 gitignore 又会把这个文件夹忽略,不太懂怎么弄
ysc3839
2020-12-14 12:23:28 +08:00
@zxCoder 文件放在外面,开发时手动拷进去。
forgottencoast
2020-12-16 11:37:20 +08:00
@zxCoder 就放在项目根目录,设置成始终拷贝就可以了,编译的时候自然就会拷贝到 bin/Debug 目录下的。
你这属于基本概念都不清晰,只要是使用 VS 创建的项目自动就是这样设置的,以前是 app.config 或者 web.config,现在 dotnet core 是 appsettings.json,不需要多做什么额外的工作,它就可以正常运行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/735062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX