项目文件的文件路径?

Osc*_*eif 43 .net c# path

我正在使用C#中的媒体播放器,但是当我想进行测试时,我遇到了问题.

我必须使用以下路径创建一个新的对象歌曲:

@"C:\Users\Jesus Antonio\Desktop\JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"
Run Code Online (Sandbox Code Playgroud)

它工作,但当我更改计算机时,我必须重写整个路径,我的项目称为JukeboxV2.0

在java中我记得你可以写一下例如路径

@"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"
Run Code Online (Sandbox Code Playgroud)

这将节省大量时间,因为我可以将我的项目带到不同的计算机并且它可以工作,但在这里我不知道如何做到这一点,任何人都知道吗?

ean*_*son 58

你可以这样做,在你的应用程序环境文件夹中获取路径"Data\ich_will.mp3".

string fileName = "ich_will.mp3";
string path = Path.Combine(Environment.CurrentDirectory, @"Data\", fileName);
Run Code Online (Sandbox Code Playgroud)

在我的情况下,它将返回以下内容:

C:\MyProjects\Music\MusicApp\bin\Debug\Data\ich_will.mp3
Run Code Online (Sandbox Code Playgroud)

我用Path.CombineEnvironment.CurrentDirectory在我的例子.这些非常有用,允许您根据应用程序的当前位置构建路径.Path.Combine组合两个或多个字符串以创建位置,并Environment.CurrentDirectory为您提供应用程序的工作目录.

工作目录不一定与您所在的路径相同executable,但在大多数情况下应该是,除非另有说明.

  • 这在调试时不起作用.它将在Debug/bin文件夹中查找. (3认同)
  • 另见http://stackoverflow.com/questions/362790/what-is-the-best-way-to-determine-application-root-directory (2认同)

jac*_*.li 26

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")
Run Code Online (Sandbox Code Playgroud)

基目录+你的文件名

  • 使用`Path.Combine()` (2认同)

Lui*_*iso 5

我遇到了类似的问题,我的项目中有一个文件,并且想测试一个类,该类必须处理从FS加载文件并以某种方式处理它们。我所做的是:

  • 将文件添加test.txt到我的测试项目
  • 在解决方案资源管理器中命中alt-enter(文件属性)
  • 还有我定BuildActionContentCopy to Output DirectoryCopy if newer,我想Copy always会做它,以及

然后在测试中,我只需要Path.Combine(Environment.CurrentDirectory, "test.txt")这样就可以了。无论何时编译项目,它都会将文件(及其所有的父路径,如果它在文件夹中)复制到bin\Debug(或正在使用的任何配置)文件夹中。

希望这可以帮助某人

  • 除非有充分的理由,否则我建议使用“如果较新”而不是“始终复制”。我们有一个项目,其中有数百个JS文件设置为始终复制,一旦检测到任何更改,就会强制复制所有文件。该操作导致相当大的开发人员流失,直到解决为止。 (3认同)