C# 将程序指向资源文件夹

C# 将程序指向资源文件夹,c#,path,resources,filepath,readfile,C#,Path,Resources,Filepath,Readfile,我正在制作一个应用程序,它将在另一台计算机上打开,它依赖于在编译资源中阅读。我能够使它读取给定路径的文件内容,但我需要它自动找到任何使用它的计算机上的资源文件夹的路径 代码是 private void readFile() { string path = ; string[] lines = System.IO.File.ReadAllLines(path); for (int i = 0; i <= 10; i++)

我正在制作一个应用程序,它将在另一台计算机上打开,它依赖于在编译资源中阅读。我能够使它读取给定路径的文件内容,但我需要它自动找到任何使用它的计算机上的资源文件夹的路径

代码是

    private void readFile()
    {
        string path = ;
        string[] lines = System.IO.File.ReadAllLines(path);
        for (int i = 0; i <= 10; i++)
        {
            if (i == 2)
            {
                media[0, 0] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[0, 0]);
            }
            if (i == 3)
            {
                media[0, 1] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[0, 1]);
            }
            if (i == 5)
            {
                media[1, 0] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[1, 0]);
            }
            if (i == 6)
            {
                media[1, 1] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[1, 1]);
            }
            if (i == 8)
            {
                media[2, 0] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[2, 0]);
            }
            if (i == 9)
            {
                media[2, 1] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[2, 1]);
            }
            if (i == 10)
            {
                media[2, 2] = lines[i];
                System.Diagnostics.Debug.WriteLine(media[2, 2]);
            }
        }
    }
private void readFile()
{
字符串路径=;
string[]lines=System.IO.File.ReadAllLines(路径);

对于(inti=0;i正确的处理方法,在我看来是这样的

    string path = @".\myrelateive\path\toResources\myFile.txt";
    FileInfo myFile = new FileInfo(path);
    string[] lines = System.IO.File.ReadAllLines(myFile.FullName);
基本上,您应该只在源代码中使用相对路径。为了使其更加健壮,您可以使用
DirectoryInfo
FileInfo
等类从相对路径获取完整路径


除此之外,在解决方案资源管理器中,您需要确保在生成时将资源复制到输出目录。方法是右键单击资源并选择“查看属性”,将有一个名为“复制到输出”的设置。选择“复制(如果更新)”或“始终复制”。这将确保资源文件与bi绑定当您构建解决方案时,这些代码应该是可移植的(假设机器的其他所有内容都类似于.NET版本ect,这超出了本问题的范围)。

如果“…其他所有内容都可以正常工作…”然后从问题中删除它,只显示相关代码。我添加了它,以便清楚它的作用。无论如何,谢谢。谢谢,我明天再次开始编码时会查看它。请记住大多数(全部?)文件操作使用
Environment.CurrentDirectory
解析相对路径。这通常与调用程序集所在的目录不同。根据我的经验,在这种情况下,更常见的是希望从调用程序集的位置解析相对路径。
Path.Combine(Path.GetDirectoryName(Assembly.getExecutionGassembly().Location),@“my\relative\path.txt”)
通常是解析相对路径的最佳方法。您应该检查
.Location
是否不返回null,这可能会发生在从internet下载的程序集上。