V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxCoder
V2EX  ›  .NET

关于文件读取目录的问题

  •  
  •   zxCoder · 2020-12-13 22:00:36 +08:00 · 2236 次点击
    这是一个创建于 1450 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    7 条回复    2020-12-16 11:37:20 +08:00
    opengps
        1
    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
        2
    ysc3839  
       2020-12-13 23:18:28 +08:00 via Android
    我自己开发的项目,配置文件是放在 exe 所在目录的,忽略当前目录。
    beyondex
        3
    beyondex  
       2020-12-13 23:21:09 +08:00
    通过 AppDomain.CurrentDomain.BaseDirectory 获取程序的运行路径,或者
    Web 程序通过 IHostEnvironument.WebContentRoot 获取。。
    Jirajine
        4
    Jirajine  
       2020-12-14 00:16:35 +08:00 via Android
    怎么不行了,绝对路径和相对路径都行。
    绝对路径可以直接 /etc/(app name)/xx.conf,$HOME/.xx.conf,或者 xdg 那一套。
    相对路径的话,可以取运行程序时的当前路径(不是 executable 所在的路径),并且允许用户指定。
    zxCoder
        5
    zxCoder  
    OP
       2020-12-14 11:40:37 +08:00
    @opengps
    @ysc3839
    @beyondex
    @Jirajine

    因为开发的时候配置文件要放到 bin/Debug 下面,然后 gitignore 又会把这个文件夹忽略,不太懂怎么弄
    ysc3839
        6
    ysc3839  
       2020-12-14 12:23:28 +08:00 via Android
    @zxCoder 文件放在外面,开发时手动拷进去。
    forgottencoast
        7
    forgottencoast  
       2020-12-16 11:37:20 +08:00
    @zxCoder 就放在项目根目录,设置成始终拷贝就可以了,编译的时候自然就会拷贝到 bin/Debug 目录下的。
    你这属于基本概念都不清晰,只要是使用 VS 创建的项目自动就是这样设置的,以前是 app.config 或者 web.config,现在 dotnet core 是 appsettings.json,不需要多做什么额外的工作,它就可以正常运行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5912 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.