[英]How to get relative path of a file in visual studio?
我试图获取我在 Visual Studio 的解决方案资源管理器中添加的图像文件的路径,但我无法获取该图像的相对路径。 H是我项目的文件结构:
/BulutDepoProject /FolderIcon Folder.ico Main.cs
我可以得到这样的图像:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
但是我应该能够通过以下方式获得它:
"~\\FolderIcon\\Folder.ico"
我想我不知道它的确切语法,所以我无法获取图像。 :(
当您想使用任何类型的外部文件时,当然有一种方法可以将它们放在项目中的文件夹中,但不如从资源中获取它们有效。 在常规的 Visual Studio 项目中,您应该在Properties
部分下有一个Resources.resx
文件,如果没有,您可以轻松添加自己的Resource.resx
文件。 并在其中添加任何类型的文件,您可以在此处访问将资源文件添加到项目的演练。
在您的项目中有资源文件后,调用它们很容易,如下所示:
var myIcon = Resources.MyIconFile;
当然,您应该像这样添加using Properties
语句:
using <namespace>.Properties;
我来晚了,我不确定这是否是您要查找的内容,但我想我会添加它,以防其他人发现它有用。
假设这是您的文件结构:
/BulutDepoProject
/bin
Main.exe
/FolderIcon
Folder.ico
Main.cs
您需要编写相对于Main.exe
文件的路径。 所以,你想访问Folder.ico
,在你的Main.cs
你可以使用:
String path = "..\\FolderIcon\\Folder.ico"
这似乎对我有用!
省略“~\\”:
var path = @"FolderIcon\Folder.ico";
~\\
在文件系统方面没有任何意义。 我见过的唯一正确使用的地方是在 Web 应用程序中,其中 ASP.NET 将波浪号替换为应用程序根目录的绝对路径。
您通常可以假设路径是相对于 EXE 所在文件夹的。 此外,请确保在 Visual Studio 的属性选项卡中将图像指定为“内容”和“如果更新则复制”/“始终复制”。
我也遇到了同样的问题,我能够解决它。 那么让我解释一下我应用的步骤。 我会根据你的情况来解释。
根据我的方法,我们需要使用 'Path' 类和 'Assembly' 类来获取相对路径。
所以首先在 using 语句中导入 System.IO 和 System.Reflection。
然后键入下面给定的代码行。
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
实际上上面给定的行存储了您项目的输出目录的路径。(这里的“输出”目录是指您的项目的Debug文件夹)。
现在将您的 FolderIcon 目录复制到 Debug 文件夹中。 然后键入下面给定的行。
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
现在这个 'iconPath' 变量包含你的 Folder.ico 的整个路径。 您所要做的就是将其存储在字符串变量中。 使用下面的代码行。
string icon_path = new Uri(iconPath ).LocalPath;
现在您可以使用这个 icon_path 字符串变量作为图标的相对路径。
谢谢。
在 Visual Studio 中,请单击“解决方案资源管理器”窗格中的“Folder.ico”文件。 然后您将看到“属性”窗格。 将“复制到输出目录”行为更改为“如果更新则复制”。 这将使 Visual Studio 将文件复制到输出 bin 目录。
现在要使用相对路径获取文件路径,只需键入:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
希望有所帮助。
我认为使用这将是最简单的
new Uri("pack://application:,,/FolderIcon/" + youImageICO);
或者这段代码可以在任何机器上运行,如果你的文件夹在你的根项目中,如果你想改变它......只需更改此部分@“..\\”
public static string bingPathToAppDir(string localPath)
{
string currentDir = Environment.CurrentDirectory;
DirectoryInfo directory = new DirectoryInfo(
Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath)));
return directory.ToString();
}
我的文件夹位于项目的根目录,我使用了这个:
string sCurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
string sFile = System.IO.Path.Combine(sCurrentDirectory, @"libs\cat");
string sFilePath = Path.GetFullPath(sFile);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.