c#获取当前文件被调用
时间: 2023-12-08 19:03:06 浏览: 126
你可以通过获取当前执行代码的堆栈信息来获取当前文件被调用的路径。具体方法如下:
```csharp
// 获取当前执行代码的堆栈信息
StackTrace stackTrace = new StackTrace();
// 获取堆栈信息中的第二个框架
StackFrame stackFrame = stackTrace.GetFrame(1);
// 获取调用当前方法的方法
MethodBase methodBase = stackFrame.GetMethod();
// 获取该方法所在的模块
Module module = methodBase.Module;
// 获取模块的完整路径
string filePath = module.FullyQualifiedName;
```
这样就可以获取到当前文件被调用的路径。需要注意的是,如果当前代码是在一个 DLL 中执行,那么获取到的路径就是该 DLL 的路径,而不是调用该 DLL 的程序的路径。
相关问题
C#获取当前调用本dll的exe文件的目录
可以使用`System.Reflection.Assembly.GetExecutingAssembly().Location`获取当前dll所在的路径,然后通过`System.IO.Path.GetDirectoryName`方法获取该路径所在的目录,即为调用该dll的exe文件的目录。下面是示例代码:
```csharp
using System;
using System.IO;
using System.Reflection;
public static class DllHelper
{
public static string GetExecutingExeDirectory()
{
string dllPath = Assembly.GetExecutingAssembly().Location;
string exePath = Path.GetDirectoryName(dllPath);
return exePath;
}
}
```
在调用该方法时,即可获取当前调用该dll的exe文件的目录。
C# 判断vsCode当前工作区打开的文件
在 C# 中,可以使用 `System.Diagnostics.Process` 类来获取 VS Code 中当前打开文件的路径。下面是一个示例:
```csharp
using System.Diagnostics;
public static string GetCurrentFilePath()
{
string editorPath = "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code";
Process process = new Process();
process.StartInfo.FileName = editorPath;
process.StartInfo.Arguments = "--unity-launcher=/Applications/Unity/Hub/Editor/2020.3.0f1/Unity.app/Contents/MacOS/Unity --wait --goto $(UNITY_CURRENT_FILE)";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return output.Trim();
}
```
注意,这个示例是在 Mac 上运行的。如果你使用的是 Windows 或 Linux,你需要修改 `editorPath` 和 `arguments` 以适应你的环境。
调用 `GetCurrentFilePath()` 将返回当前在 VS Code 中打开的文件的路径。如果没有任何文件被打开,这个方法将返回空字符串。
阅读全文