zxCoder
V2EX  ›  .NET

关于文件读取目录的问题

  •  
  •   zxCoder · Dec 13, 2020 · 2892 views
    This topic created in 2025 days ago, the information mentioned may be changed or developed.

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

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

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

    因为开发的时候配置文件要放到 bin/Debug 下面,然后 gitignore 又会把这个文件夹忽略,不太懂怎么弄
    ysc3839
        6
    ysc3839  
       Dec 14, 2020 via Android
    @zxCoder 文件放在外面,开发时手动拷进去。
    forgottencoast
        7
    forgottencoast  
       Dec 16, 2020
    @zxCoder 就放在项目根目录,设置成始终拷贝就可以了,编译的时候自然就会拷贝到 bin/Debug 目录下的。
    你这属于基本概念都不清晰,只要是使用 VS 创建的项目自动就是这样设置的,以前是 app.config 或者 web.config,现在 dotnet core 是 appsettings.json,不需要多做什么额外的工作,它就可以正常运行。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4302 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 10:10 · PVG 18:10 · LAX 03:10 · JFK 06:10
    ♥ Do have faith in what you're doing.