C# Environment.CurrentDirectory和AppDomain.CurrentDomain.BaseDirectory的区别
Environment.CurrentDirectory 和 AppDomain.CurrentDomain.BaseDirectory 都是C#中用于获取当前应用程序的目录路径的方法,但是它们的用途和行为是不同的。
Environment.CurrentDirectory 返回的是当前进程的当前工作目录路径,这通常是启动应用程序的目录。如果在启动时没有指定工作目录,那么当前目录将是应用程序的根目录。Environment.CurrentDirectory 属性是一个可读写的属性,可以通过它来改变当前工作目录。
AppDomain.CurrentDomain.BaseDirectory 返回的是当前应用程序域的基目录,这通常是应用程序的根目录。与 Environment.CurrentDirectory 不同的是,AppDomain.CurrentDomain.BaseDirectory 属性是只读的,不能改变它的值。
总之,如果你需要获取当前应用程序的目录路径,你应该使用 AppDomain.CurrentDomain.BaseDirectory 属性,因为它返回的是应用程序的根目录,而且它是只读的,避免了意外的改变。而 Environment.CurrentDirectory 则更适用于获取当前进程的当前工作目录路径。
下面举个例子:
Console.WriteLine($"{Environment.CurrentDirectory}");
Console.WriteLine($"{AppDomain.CurrentDomain.BaseDirectory}");
Console.ReadLine();
将debug下的exe发送到桌面快捷方式,并修改快捷方式下的“起始位置”(默认情况是该项与“目标”)一样。
结果发现,确实不一样:
C# Environment.CurrentDirectory和AppDomain.CurrentDomain.BaseDirectory的区别的更多相关文章
- C#中AppDomain.CurrentDomain.BaseDirectory及各种路径获取方法
// 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径,包含文件名System.Diagnostics.Proces ...
- C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
// 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. System.Diagnostics.Process.G ...
- AppDomain.CurrentDomain.BaseDirectory是什么
AppDomain.CurrentDomain.BaseDirectory 是获取基目录,它由程序集冲突解决程序用来探测程序集.由显示的路径可以看出,它代表的是程序集所在的目录,它具有读取和写入的属性 ...
- C# AppDomain.CurrentDomain.BaseDirectory
AppDomain.CurrentDomain.BaseDirectory 是获取基目录,它由程序集冲突解决程序用来探测程序集.由显示的路径可以看出,它代表的是程序集所在的目录,它具有读取和写入的 ...
- 关于程序路径Path.Combine以及AppDomain.CurrentDomain.BaseDirectory
关于程序路径 LucenePath:@(System.Configuration.ConfigurationManager.AppSettings["LucenePath"])&l ...
- AppDomain.CurrentDomain.BaseDirectory
在winform中的OnPaint事件中,AppDomain.CurrentDomain.BaseDirectory得到的是下面这个路径 C:\Program Files (x86)\Microsof ...
- AppDomain.CurrentDomain.BaseDirectory项目目录相关操作
链接:https://www.cnblogs.com/guolianyu/p/3980971.html 经常用到,每次都百度,所以自己备份一下!
- C#: 获取当前路径不要用Environment.CurrentDirectory
网上大把文章写到C#获取当前路径的方法如下: // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. Syste ...
- System.Environment.CurrentDirectory和Application.StartupPath
System.Environment.CurrentDirectory的含义是获取或设置当前工作路径,而Application.StartupPath是获取程序启动路径,表面上看二者没什么区别,但实际 ...
- .Net AppDomain.CurrentDomain.AppendPrivatePath(@"Libs");
今天就说说.Net中通过反射取得某个类型时,我们怎么知道这个类型在硬盘上的哪个角落?比如说,假如我们需要要求服务端动态载入某个数据源,那服务端怎么知道数据源在哪?网上大部分的教程都写着,可以使用Ass ...
随机推荐
- Joe主题 更换评论框样式,填写QQ自动获取昵称邮箱
前言: 由于为了美观感去除了画图模式,至于怎么加上画图模式会在文章最后给出详细教程. 同时也去除了填写网址选项,这个暂时无添加教程,关键没有合适的添加位子. 话不多说,直接开始教程! 下载文件包,解压 ...
- Vigenere密码无密钥求解
0.前言 最近摸了很长时间的鱼,然后最近突然想搞一个Vigenere密码的自动求解,花了不到一天来实现了一下这个东西,不过受限于自己的水平,没有搞的太难.当然,代码部分不是全部都是从 0 开始的,关于 ...
- 机器学习 | 强化学习(8) | 探索与开发(Exploration and Exploitation)
8-探索与开发(Exploration and Exploitation) 1.导论 探索与开发二难问题 基于决策的决策过程存在以下两种选择 开发:基于目前的学习做最优的决策 探索:获取更多的学习 最 ...
- UE5 C++ 程序进程退出
// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include ...
- 【小鼓捣】手搓Verilog-CPU测试全流程自动化
自动化流程思路 1.C++/Python:生成大量包含指定指令的mips程序(A.asm) 2.命令行:导出该mips程序指令的机器码(A.txt) 3.魔改MARS:产生测试所需的IM.DM存入信息 ...
- 介绍一个不知道怎么形容的小东西--Proxy
what's this? The Proxy object is used to define custom behavior for fundamental operations (e.g. pro ...
- mysql存储过程之循环遍历查询结果集
mysql存储过程之循环遍历查询结果集 -- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除 DROP PROCEDURE IF EXISTS init_reportUrl; -- 创建存储 ...
- 编写你的第一个 Django 应用程序,第1部分
让我们通过示例来学习. 在本教程中,我们将引导您完成基本投票应用程序 它将由两部分组成: 一个公共网站,允许人们查看投票并在其中投票. 允许您添加.更改和删除投票的管理网站. 一.开发环境搭建 第一步 ...
- HTTP/1.1 优化
避免发送 HTTP 请求 对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,通过缓存技术减少请求次数. 客户端会把第一次请求以及响应 ...
- 客户端“自废武功”背后的深层秘密——CORS跨域是怎么回事?
客户端"自废武功"背后的深层秘密--CORS跨域是怎么回事? 嘿,对于刚入门的开发新手,你是不是曾经遇到过这样的情况:你正在愉快地开发一个 Web 应用,代码写得热火朝天,前后端配 ...