Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中使用文件的相对路径#_C#_Relative Path - Fatal编程技术网

C# 如何在C中使用文件的相对路径#

C# 如何在C中使用文件的相对路径#,c#,relative-path,C#,Relative Path,我正在制作一个可以打开其他程序的启动器。 这些程序将位于启动器的同一文件夹或子文件夹中。 我不知道它们的完整路径,因为用户选择保存它们的位置。 它可能是光盘C、D、E、D/folder/newfolder54/sdfsdfsdf/program.exe等。 显示如何为此目的使用相对路径相对路径是相对于当前工作目录的,它不一定是安装启动器的目录 您可以使用: Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SomeFile.dat") 获

我正在制作一个可以打开其他程序的启动器。 这些程序将位于启动器的同一文件夹或子文件夹中。 我不知道它们的完整路径,因为用户选择保存它们的位置。 它可能是光盘C、D、E、D/folder/newfolder54/sdfsdfsdf/program.exe等。
显示如何为此目的使用相对路径

相对路径是相对于当前工作目录的,它不一定是安装启动器的目录

您可以使用:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SomeFile.dat")

获取相对于包含启动器的目录的路径。

启动器有自己的路径:

var launcherFullName = System.Reflection.Assembly.GetEntryAssembly().Location;
var launcherPath = System.IO.Path.GetDirectoryName(executeableFullName);
然后将启动器的路径和其他程序的相对路径结合起来:

var absolutePath = System.IO.Path.Combine(launcherPath, relativePath);
Process.Start(abosolutePath);

相对路径应该可以正常工作。你尝试过什么?你被困在哪里?相对于什么?我尝试了Process.Start(“..\\Game1.exe”);但是,我总是遇到一个找不到文件的错误。请坚持,因为您的问题不足以让我们给出任何充分的答案。@Devo0123”。\\Game1.exe位于launcher当前目录上方的文件夹中,默认情况下,该目录是launcher exe的目录。somefile.dat是什么?该语句用红色下划线dots@Devo0123-仅供参考,有一个名为“错误列表窗口”的东西,它会给你一条消息,说明为什么你的声明用红点划线-@RandRandom谢谢。在VS位置中,项目位于+debug文件夹中。然而,一个已发布的项目在光盘E上直观地显示在我的游戏文件夹中——出于某种原因,该项目位于APPDATA中。我不知道为什么。这是windows forms/.net吗?我怎样才能在我的程序上生成一个exe,然后让它在我想要的任何地方运行呢。似乎我有一些一键式的东西,不知道它是什么is@Devo0123-是的,这听起来像一个一键式安装程序,当您发布项目时-如果您不需要安装程序,您只需压缩bin\Debug或bin\Release文件夹并共享该压缩文件-这有一个“缺点”,即不会安装预请求,例如.net framework或其他库,您的项目在编写此语句时可能需要Visual studio提供错误,因为2007年C#3.0()中引入了var.@Devo0123
var
关键字。您可以将其更改为
string
。谢谢。什么是executableFullName?我应该在里面放一个“Game.exe”吗?同样最重要的是:从何处获取relativePath?我将relativePath设置为“//Game.exe”,但错误表明仍然无法找到该文件,我编写了
string launcherFullName=System.Reflection.Assembly.GetEntryAssembly().Location;字符串launcherPath=System.IO.Path.GetDirectoryName(“WindowsFormsApp1.exe”);MessageBox.Show(启动程序路径)消息框不显示任何内容