首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# -如何从Program.cs获取Program.cs所在目录的路径

C# -如何从Program.cs获取Program.cs所在目录的路径
EN

Stack Overflow用户
提问于 2018-07-07 03:38:24
回答 6查看 3K关注 0票数 -2

我使用Windows (v2.1.301)创建了一个解决方案,创建了一个控制台项目,并将该项目添加到了.NET上的解决方案中。

代码语言:javascript
运行
复制
dotnet new sln -o ConsoleSol
dotnet new console -o ConsoleSol/ConsoleApp
dotnet sln ConsoleSol/ConsoleSol.sln add ConsoleSol/ConsoleApp/ConsoleApp.csproj

文件夹结构如下所示:

代码语言:javascript
运行
复制
ConsoleSol/
├── ConsoleApp
│   ├── bin
│   │   └── Debug
│   │       └── netcoreapp2.1
│   ├── ConsoleApp.csproj
│   ├── obj
│   │   ├── Debug
│   │   │   └── netcoreapp2.1
│   │   └── project.assets.json
│   └── Program.cs
└── ConsoleSol.sln

我希望在不对路径进行硬编码的情况下获得ConsoleSol/ConsoleApp的路径。我想这样做的原因是,我可以在该目录上创建一个文件。

如何从Program.cs获取ConsoleSol/ConsoleApp的路径(即ConsoleApp.csproj和Progam.cs所在的路径)?

我尝试了以下几种方法:

代码语言:javascript
运行
复制
class Program
{
    static void Main(string[] args)
    {
        var directory = Directory.GetCurrentDirectory();
        Console.WriteLine(directory);
    }
}

但是Directory.GetCurrentDirectory()会返回ConsoleSol/ConsoleApp/bin/Debug/netcoreapp2.1的路径

注意:我不想获取.exe的路径,它可以通过调用System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)获得。相反,我正在尝试获取Program.cs的路径

EN

Stack Overflow用户

发布于 2019-08-02 23:01:04

我猜你不能在运行时得到它,但是在前后事件中,有几个变量可以使用,如果你想做的事情可以在编译之前或之后解决的话。

其中两个变量是:

$(ProjectDir):项目文件夹

$(OutDir):类似于"bin\Debug\netcoreapp2.2\"的东西

您可以在项目文件.csproj中指定CMD脚本,例如:

代码语言:javascript
运行
复制
<Project Sdk="Microsoft.NET.Sdk">
   ...
  <Target Name="PostBuild" BeforeTargets="PostBuildEvent">
    <Exec Command="echo &quot;$(ProjectDir)$(OutDir)&quot;"/>
  </Target>
  ...
<Project Sdk="Microsoft.NET.Sdk">
票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51216716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档