C# 找不到资源文件c的路径#

C# 找不到资源文件c的路径#,c#,filepath,class-library,C#,Filepath,Class Library,首先,如果已经回答了这个问题,我将重复这个问题。我试图找到我的问题的答案,但失败了,没有一个自动建议能回答我的问题。 我有我的主项目(XAML)和一个名为filestoreforfiles的类库项目。类库项目被引用到主项目中,我在类库项目中有图像和图标文件,我可以在主项目中无问题地访问它们,但是,我很难从CL项目中获取txt文件的内容以显示在主项目的标签中。我发现错误:系统找不到该文件,从错误中,我可以看到它正试图在主项目bin\debug文件夹中查找文件 我试着跟随前一篇文章,这篇文章似乎部分

首先,如果已经回答了这个问题,我将重复这个问题。我试图找到我的问题的答案,但失败了,没有一个自动建议能回答我的问题。 我有我的主项目(XAML)和一个名为filestoreforfiles的类库项目。类库项目被引用到主项目中,我在类库项目中有图像和图标文件,我可以在主项目中无问题地访问它们,但是,我很难从CL项目中获取txt文件的内容以显示在主项目的标签中。我发现错误:系统找不到该文件,从错误中,我可以看到它正试图在主项目bin\debug文件夹中查找文件

我试着跟随前一篇文章,这篇文章似乎部分地回答了我的问题,但遗憾的是没有成功。

txt文件生成操作设置为:Resource,复制到输出目录设置为:Copy Always。 正如我提到的,我在主项目中引用了FileStore项目,并且图像工作正常。 下面是我正在使用的代码,我尝试过不同的变体,例如: \参考资料\textFile.txt和\textFile.txt,仍然没有运气。 '''

''' 对于比较,这里是图像文件的路径,但我无法使其与txt文件一起工作,因为错误显示:不支持给定的路径格式。。 '''

''' 我希望能够将文本文件的内容从类库项目输入到主xaml项目中的标签。
目前,编译器一直在主项目的调试文件夹中查找此文件,我想要的是,编译器要在CL FileStore项目中查找txt文件

为了始终访问该文件,我们必须将该文件复制到调试文件夹。右键单击解决方案资源管理器中的文件更改属性,然后尝试从执行程序集位置访问该文件


为了始终访问该文件,我们必须将该文件复制到调试文件夹。右键单击解决方案资源管理器中的文件更改属性,然后尝试从执行程序集位置访问该文件


多亏了@Sreekanth gundlally的帖子,我成功地解决了我的问题。我主要是从@Sreekanth gundlally提供的答案中汲取经验,但缺少一点重要的东西。字符串文件名应包括类库项目中资源文件所在的所有子文件夹,例如,在我的示例中,文件夹名为“Resources”,因此代码应如下所示:

string fileName = @"Resources/myfile.txt";
try
{
  string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), fileName);
  using (StreamReader sr = new StreamReader(filePath))
  {
    // Read the stream.
    bodyContent.Append(sr.ReadToEnd());
  }
我还清理和重建了解决方案,在这之后,一切都很有魅力


还有一点需要注意的是,任何尝试此操作并获得有趣字符的人都要确保将文件的编码设置为UTF-8,因为这是StreamReader使用的默认编码,否则,如果文件内容包含撇号等符号,则可能无法正确读取。

多亏@Sreekanth gundl的帖子,我已经成功解决了我的问题。我主要是从@Sreekanth gundlally提供的答案中汲取经验,但缺少一点重要的东西。字符串文件名应包括类库项目中资源文件所在的所有子文件夹,例如,在我的示例中,文件夹名为“Resources”,因此代码应如下所示:

string fileName = @"Resources/myfile.txt";
try
{
  string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), fileName);
  using (StreamReader sr = new StreamReader(filePath))
  {
    // Read the stream.
    bodyContent.Append(sr.ReadToEnd());
  }
我还清理和重建了解决方案,在这之后,一切都很有魅力


还有一点需要注意的是,任何尝试此操作并获得有趣字符的人都要确保文件的编码设置为UTF-8,因为这是StreamReader使用的默认编码,否则如果文件内容包含撇号等符号,则可能无法正确读取。

这不是运行时错误吗?因为你是说编译器在抱怨。它是否会在visual studio错误窗口中弹出,或者在使用f5或通过编译的二进制文件运行应用程序时弹出?@KristófTóth该错误仅在调用ReadFileinClLibr()时发生。当调用包含此方法的按钮事件处理程序时,将调用此方法。否则我不会得到任何其他错误,因此当我点击F5时,整个应用程序运行良好,直到我选择按钮调用ReadFileinClLibr()方法。为我帖子中的误导性措辞道歉。这不是运行时错误吗?因为你是说编译器在抱怨。它是否会在visual studio错误窗口中弹出,或者在使用f5或通过编译的二进制文件运行应用程序时弹出?@KristófTóth该错误仅在调用ReadFileinClLibr()时发生。当调用包含此方法的按钮事件处理程序时,将调用此方法。否则我不会得到任何其他错误,因此当我点击F5时,整个应用程序运行良好,直到我选择按钮调用ReadFileinClLibr()方法。为我帖子中的误导性措辞道歉。谢谢你,遗憾的是它仍然不起作用。在错误消息下面:找不到文件:“C:\\Users\\user\\source\\repos\\App Name\\bin\\Debug\\Textfile.txt”。我还手动检查了,文件不在那里,因此没有被复制。我已根据您的屏幕截图将文件的构建操作设置为“内容”,并将复制输出目录更改为“更新时复制”。在运行期间,由于某种原因,它似乎无法在库项目中找到该文件。您的资源文件在哪里可用?如果您在类库项目中添加了文件,然后试图通过引用项目中的类库来访问应用程序中的文件。在这种情况下,首先你必须将资源嵌入到项目中,并公开让外部访问,如果下面stackoverflow的帖子能帮你解决这个问题,请回答。谢谢,遗憾的是它仍然不起作用。在错误消息下面:找不到文件:“C:\\Users\\user\\source\\repos\\App Name\\bin\\Debug\\Textfile.txt”。我还手动检查了,文件不在那里,因此没有被复制。我已根据将文件上的生成操作设置为“内容”
StringBuilder bodyContent = new StringBuilder();    
string fileName = "myfile.txt";
try
{
  string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), fileName);
  using (StreamReader sr = new StreamReader(filePath))
  {
    // Read the stream.
    bodyContent.Append(sr.ReadToEnd());
  }
}
catch(Exception ex)
{
   Console.WriteLine(String.Format("{0} @ {1}", "Exception while reading the file: " + ex.InnerException.Message, DateTime.Now));
   throw ex;
}
string fileName = @"Resources/myfile.txt";
try
{
  string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), fileName);
  using (StreamReader sr = new StreamReader(filePath))
  {
    // Read the stream.
    bodyContent.Append(sr.ReadToEnd());
  }