我正在尝试获取我在Visual Studio中的解决方案资源管理器中添加的图像文件的路径,但我无法获得该图像的相对路径。 H是我项目的文件结构:
/BulutDepoProject /FolderIcon Folder.ico Main.cs
我可以得到这样的图像:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
但我应该能够得到类似的东西:
"~\\FolderIcon\\Folder.ico"
我想我不知道它的确切语法,所以我无法获取图像。 :(
答案 0 :(得分:45)
如果您想使用任何类型的外部文件,肯定有办法将它们放在项目中的文件夹中,但不如从资源中获取它们那样有效。在常规的Visual Studio项目中,您应该在Resources.resx
部分下有一个Properties
文件,否则,您可以轻松添加自己的Resource.resx
文件。并在其中添加任何类型的文件,您可以通过演练将资源文件添加到项目here。
在项目中拥有资源文件后,调用它们很容易:
var myIcon = Resources.MyIconFile;
当然你应该像这样添加using Properties
语句:
using <namespace>.Properties;
答案 1 :(得分:31)
我有点晚了,我不确定这是不是你要找的东西,但我想我会添加它以防其他人觉得它有用。
假设这是您的文件结构:
/BulutDepoProject
/bin
Main.exe
/FolderIcon
Folder.ico
Main.cs
您需要编写相对于Main.exe
文件的路径。因此,您想要访问Folder.ico
中的Main.cs
,您可以使用:
String path = "..\\FolderIcon\\Folder.ico"
这似乎对我有用!
答案 2 :(得分:19)
省略“〜\”:
var path = @"FolderIcon\Folder.ico";
~\
对文件系统没有任何意义。我见过的唯一正确使用的地方是在一个Web应用程序中,ASP.NET用代替应用程序根目录的绝对路径替换代字号。
您通常可以假设路径相对于EXE所在的文件夹。此外,请确保在Visual Studio的属性选项卡中将图像指定为“content”和“copy if new”/“always always”。
答案 3 :(得分:12)
我也遇到了同样的问题,我能够完成它。那么让我解释一下我应用的步骤。我将根据你的情况解释一下。
根据我的方法,我们需要使用'Path'类和'Assembly'类来获取相对路径。
首先在using语句中导入System.IO和System.Reflection。
然后输入下面给出的代码行。
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
实际上,上面给定的行存储了项目输出目录的路径。(这里'output'目录指的是项目的 Debug 文件夹)。
现在将FolderIcon目录复制到Debug文件夹中。然后键入下面给定的行。
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
现在这个'iconPath'变量包含Folder.ico的整个路径。您所要做的就是将其存储在字符串变量中。请使用下面的代码行。
string icon_path = new Uri(iconPath ).LocalPath;
现在您可以使用此icon_path字符串变量作为图标的相对路径。
感谢。
答案 4 :(得分:3)
我认为使用它将是最简单的
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();
}
答案 5 :(得分:2)
在Visual Studio中,请在“解决方案资源管理器”窗格中单击“ Folder.ico”文件。然后,您将看到“属性”窗格。将“复制到输出目录”行为更改为“如果更新则复制”。这将使Visual Studio将文件复制到输出bin目录。
现在要使用相对路径获取文件路径,只需键入:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
希望有帮助。