2019独角兽企业重金招聘Python工程师标准>>>

摘要: .NET Core 应用程序相对于以前的.NET Framework 应用程序在启动运行的方式上有一定的差异,今天就来谈一谈这个获取应用程序启动路径的问题。

.NET Core 应用程序相对于以前的.NET Framework 应用程序在启动运行的方式上有一定的差异,今天就来谈一谈这个获取应用程序启动路径的问题。

1.工作路径 WorkingDirectory

下面的两种方式都可以获取工作路径,结果都是一样的:

Environment.CurrentDirectory;
Directory.GetCurrentDirectory();

其实所谓的工作路径就是我们应用程序的启动路径,所以我们平时所说的获取应用程序的启动路径,也是通过上面的方式。

(1)我们通过VS F5直接运行

VS会先编译我们的项目,输出到Debug对应的sdk版本 目录下,然后以这个目录作为工作路径,启动我们的应用程序。

(2)通过dotnet 命令运行

我们在项目根目录,执行 dotnet run命令:

我们执行 dotnet run命令来启动时,对于程序的工作路径就是执行命令的路径,所以说,获取到的路径变化了。但是我们通过dotnet run命令运行的应用程序文件实际所在的目录也是和上面的目录一样的,即:Debug对应的sdk版本,我们可以通过代码来测试一下:

新加的代码是获取程序集所在的路径,可以发现也是在 Debug对应的sdk版本 目录下的。

我们将程序发布到 D:\test 目录下

可以看到,前两种方式获取到的都是执行dotnet命令所在的目录即工作目录,后一种方式是获取到的我们应用程序所在的目录。

2.结论

通过上面的测试,我们可以得出结论,.NET Core 应用程序获取工作路径/启动路径,就是获取的执行dotnet命令时所在的目录,所以当我们在Linux等系统部署时,设置守护进程时,记得一定要将工作路径设置为程序文件所在的目录,不然应用程序获取到的路径将不会是应用程序文件所在的目录,当我们在应用程序里设置了一些相对路径,诸如读取配置文件,写日志(Log4net、NLog),将会与我们的预期不一样。因为相对路径,是默认相对于应用程序的工作路径的。

Environment.CurrentDirectory; //获取应用程序工作目录
Directory.GetCurrentDirectory();//获取应用程序工作目录(和上面的方式效果是一样的)Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工

转载于:https://my.oschina.net/u/3722671/blog/1835059

.NET Core 中的路径问题相关推荐

  1. 浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式 pth中的路径加载使用

    首先xxx.pth文件里面会书写一些路径,一行一个. 将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指定的路径. Python客栈送红包.纸质书 有时,在用i ...

  2. ASP.NET Core 中文文档 第三章 原理(13)管理应用程序状态

    原文:Managing Application State 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:高嵩 在 ASP.NET Core 中,有多种途径可以对应用程序的状态进行 ...

  3. 【gRPC】 在.Net core中使用gRPC

    最近在学习.net core的微服务体系架构.微服务之间的通信常常通过gRPC进行同步通信,但是需要注意的是,大多数微服务之间的通信是通过事件总线进行异步通信.在微软介绍.net微服务体系架构的项目e ...

  4. 如何解决在ASP.NET Core中找不到图像时设置默认图像

    背景 web上如果图片不存在一般是打xx,这时候一般都是会设置默认的图片代替.现在用中间件的方式实现统一设置, 一次设置,全部作用 . 此示例演示如何解决在ASP.NET Core中找不到图像时设置默 ...

  5. 如何在 ASP.NET Core 中使用 Route 特性

    ASP.NET Core 中的 Route 中间件的职责在于将 request 匹配到各自 Route 处理程序上,Route 分两种:基于约定 和 基本特性 模式. 基于约定 模式的Route采用集 ...

  6. 如何在 ASP.NET Core 中实现全局异常拦截

    异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...

  7. 如何在 Asp.Net Core 中 管理敏感数据

    译文链接:https://www.infoworld.com/article/3576292/how-to-work-with-user-secrets-in-asp-net-core.html 在应 ...

  8. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

  9. 在Asp.NET Core中如何优雅的管理用户机密数据

    在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法. 在早期VB/VB.NET时代,经常使用.ini ...

最新文章

  1. RS232串口交叉直连
  2. python图像质量评价_OpenCV图像质量评价的SSIM算法(图像相似度)
  3. hive 配置mysql_Hive的mysql安装配置
  4. 计算机视觉实习面经【微软/阿里/腾讯】
  5. 本地语音控制模块 | 带语音识别的智能家居方案
  6. [转载] 简单工厂模式和工厂方法模式在Python中的实现
  7. idea关于连接mysql数据库异常解决的方法
  8. Atitit poi读取大文件内存溢出的解决 目录 1. poi提供了两种读取excel的方式,一种是类似xml的Dom, 1 2. POI官网上提到XSSF有三种读写excel,POI地址 1 3
  9. Office基础操作:Word插入visio图片显示不全
  10. 数据分析/大数据研发面经笔经(阿里/腾讯/网易/招行信用卡中心/小红书/vivo等)
  11. hdu2859Phalanx
  12. kafka之主题操作kafka-topics命令
  13. vgg16构造模型图(转)
  14. 专题7:动态规划 记忆化搜索
  15. electron项目打包报错
  16. ACM-ICPC 2017 Asia QingDao:喜,抑或是悲?幸运,抑或是倒霉?退役!!!
  17. 常见的手机验证api接口有哪些
  18. Oracle10g SQL分页查询写法与效率比较
  19. Springboot入门案例教程
  20. swf反编译/swf decompiler/flash decompiler软件ASV2011截图

热门文章

  1. 统计学习方法|感知机原理剖析及实现
  2. 每天5分钟玩转python3算法:选择排序
  3. rsync+shell脚本完成自动化
  4. LeetCode(30):与所有单词相关联的字串
  5. 树莓派上安装boost库
  6. node 进阶 | 通过node中如何捕获异常阐述express的特点
  7. 面向对象的基本设计原则【转】
  8. cherrypy 入门笔记(1) hello world
  9. 学会使用svn:externals
  10. Twitter-Snowflake,64位自增ID算法详解