【问题标题】:Textfiles can't be found when making reference to other projects引用其他项目时找不到文本文件
【发布时间】:2026-01-24 00:50:02
【问题描述】:

还有一个问题。我在这个解决方案中有一个解决方案“solution1”是 3 个项目“projectA”、“projectB”、“projectC”。我已经从 projectA 中引用了 projectB 和 projectC。我已将另外 2 个项目添加到我的解决方案文件夹中,其中已经包含我的 projectA。 我已将它们添加到解决方案资源管理器中,并按照我所说的进行了参考。

现在,当我单击来自 projectA 的表单上的按钮时:

    private void formProjectAButton_Click(object sender, EventArgs e)
    {
        this.Hide();
        projectB.Form1 fs = new projectB.Form1();         
        fs.Show();
    }

projectB 的表格显示没有问题。但是当我使用来自 projectB 的表单时(它包含一个图片框和一个文本框。图片框只包含一个静态图像,位于我的 bin/debug 文件夹中。文本框包含我在点击图片框时加载的文本):

    private void picturebox1_Click(object sender, EventArgs e)
    {
        textBox1.Text = "";



            inputStream = File.OpenText("gebod1.txt");
            string line = inputStream.ReadLine();
            while (line != null)
            {
                textBox1.AppendText(line);
                line = inputStream.ReadLine();
            }



        textBox1.Visible = true;
    }

但是现在,当我单击图片框以将文本文件(位于 projectB 调试文件夹中)中的文本加载到文本框中时,我得到一个 filenotfoundexeption

我能做些什么来解决这个问题?

提前致谢。

【问题讨论】:

    标签: c# projects-and-solutions filenotfoundexception


    【解决方案1】:

    您正在使用相对路径。相对路径是当前工作文件夹

    因此,如果您在 C:\Foo\ProjectA 中有项目 A,在 C:\Foo\ProjectB 中有项目 B,则项目 A 中的文本文件将在 C:\Foo\ProjectA\bin\Debug\foo 中。文本。您需要导航到相对于您的工作文件夹的正确文件夹,或指定完整路径。

    例如,您可以尝试这样的事情。显然,这只是一个示例,让您了解如何完成您所追求的目标。 File.OpenText("..\..\..\ProjectA\bin\Debug\gebod1.txt");

    .. 在此上下文中的意思是“在树中向上一个文件夹”。因此,如果您在 C:\Foo\Bar 中,..\Baz 的相对路径将意味着 C:\Foo\Baz\

    另一种选择是向 ProjectA 添加构建后步骤,将文件复制到已知文件夹,然后从该位置引用文件。

    【讨论】:

    • 感谢您的帮助。但是,当我单击 projectA 的 form1 上的一个按钮时,是否有一种方法可以关闭 projectA 而 projectB 自行打开?然后,当我单击 projectB 表单上的按钮(例如“返回 projectA form1”)时,projectB 关闭(不是隐藏,而是真正关闭)并且 projectA 打开?这样我就不必弄乱路径和程序喜欢打开完整的项目B. 希望你明白我的意思