获取资源文件夹路径 c#
本文关键字:路径 文件夹 资源 获取 | 更新日期: 2023-09-27 18:32:22
我在项目中拥有的一些资源很好,使用字符串路径工作正常,但是如果我将项目移动到另一个目录或另一台计算机,它将停止工作。
请我需要在字符串变量中获取项目资源文件夹的路径,
像这样的东西
C:'Users'User1'Documents'<projects folder>'<project name>'Resources'
提前谢谢。
如果您知道相对于应用程序运行位置的路径,则可以执行以下操作。首先,获取应用的运行路径:
string RunningPath = AppDomain.CurrentDomain.BaseDirectory;
然后,使用如下所示的内容导航到相对路径:
string FileName = string.Format("{0}Resources''file.txt", Path.GetFullPath(Path.Combine(RunningPath, @"..'..'")));
在此示例中,我的"资源"文件夹位于正在运行的目录的两个目录上。
我还应该提到,如果您的资源包含在项目中,您应该能够使用以下方法获取它:
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
这将返回资源数组。
如果文件存储在项目文件夹中,则可以使用 System.AppDomain.CurrentDomain.BaseDirectory
.此语句检索有关应用程序安装位置的路径。单击此处获取有关此内容的详细说明。
这可能不是最干净的方式,但它对我很有用。
如果你有一个这样的结构:
C:'...'MyApp'app.exe
C:'...'MyApp'ConfigFiles'MyConfig.xml
该代码将返回相对于正在运行的程序集的路径。
GetPath("ConfigFiles/MyConfig.xml") // returns the full path to MyConfig.xml
private string GetPath(string relativePath)
{
var appPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string pattern = @"^(.+'')(.+exe)$";
Regex regex = new Regex(pattern, RegexOptions.None);
var match = regex.Match(appPath);
return System.IO.Path.GetFullPath(match.Groups[1].Value + relativePath);
}
你可以尝试使用 |数据目录|记录在这里。
这是一篇旧Microsoft文章中对它如何工作的描述
以前很难处理数据库文件的原因之一 是数据库的完整路径在不同的 地方。这使得共享项目和部署 应用。在此版本中,.NET 运行时添加了对以下内容的支持 我们调用 DataDirectory 宏。这允许Visual Studio放置一个 连接字符串中将在 运行时。因此,而不是像这样使用连接字符串:
"Data Source=.'SQLExpress;AttachDbFileName=c:'program files'app'data.mdf"
可以有如下所示的连接字符串:
"Data Source=.'SQLExpress;AttachDbFileName=|DataDirectory|'data.mdf"
SqlClient 和 OleDb 支持此连接字符串语法 托管提供程序。
默认情况下,|数据目录|变量将扩展如下:
- For applications placed in a directory on the user machine, this will be the app's (.exe) folder. - For apps running under ClickOnce, this will be a special data folder created by ClickOnce - For Web apps, this will be the App_Data folder