我觉得我在这里遗漏了一些明显的东西......
我的WPF应用程序中有一个文本文件位于子文件夹中,因此为可怕的ASCII提前道歉。
+Project
+--+Subfolder
| +--TextFile.txt
|
+--App.config
+--App.xaml
+--etc.
此文本文件的构建操作是资源,我尝试在程序中以字符串形式访问内容,但我完全不知道我在做什么。
尝试通过Properties.Settings.Default
访问该文件并不起作用,显然我的程序中只有一个ConnectionString资源。
我无法在XAML中执行此操作,因为无论出于何种原因,没有Source
属性
<!-- somewhere up the top of App.xaml... -->
xmlns:clr="clr-namespace:System;assembly=mscorlib"
<clr:String Source="pack://application:,,,/Subfolder/Textfile.txt"/>
FindResource方法也找不到它。
FindResource("Usage.txt"); //ResourceReferenceKeyNotFoundException
我尝试做的只是引用文本文件,将其作为字符串读取并使用该字符串。否则我必须在方法调用中嵌入50行逐字字符串。因为那是一个好主意。 / s的
在WinForms中,它就像:Properties.Settings.Default.TextFile.ToString();
一样简单,但似乎没有任何工作。
我应该指出,这个文件不应该包含在输出目录中,它需要嵌入到应用程序或任何术语中。
我该怎么做?
答案 0 :(得分:3)
这应该有效:
var uri = new Uri("pack://application:,,,/Subfolder/TextFile.txt");
var resourceStream = Application.GetResourceStream(uri);
using (var reader = new StreamReader(resourceStream.Stream))
{
var text = reader.ReadToEnd();
...
}
答案 1 :(得分:1)
你可以这样做:
string file = @"pack://application:,,,/" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ";component/Subfolder/TextFile.txt";
using (var sr = new StreamReader(System.Windows.Application.GetResourceStream(new Uri(file)).Stream))
{
var data= sr.ReadToEnd();
}
答案 2 :(得分:0)
试试:
using (StreamReader sr = new StreamReader(System.AppDomain.CurrentDomain.BaseDirectory + "/Subfolder/TextFile.txt"))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
}