我创建了一个需要嵌入外部文本文件的.net核心类库。我已将Resource.resx添加到项目根目录,并将我的文本文件添加到resx。我现在可以通过代码
访问文本文件var a = Resource.MyTxtResourceFile
intellisense让我知道MyTxtResourceFile
"查找类似于[文件正确内容]的本地化字符串
当我运行代码Resource.MyTxtResourceFile
时实际返回字符串
directory1\directory2\mytxtresourcefile.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
不是文本文件的内容。
Resource.Designer看起来像这样
/// <summary>
/// Looks up a localized string similar to [the contents of my text file]
/// </summary>
public static string MyTxtResourceFile {
get {
return ResourceManager.GetString("MyTxtResourceFile ", resourceCulture);
}
}
有人可以帮忙吗?
答案 0 :(得分:1)
我不再将内容直接添加到resx文件中。我只是在项目中包含文本文件,并使用GetManifestResourceStream
方法获取内容,然后使用StreamReader
将流转换为字符串。
例如,我有一个名为Stamina.World.DataAccess.SqlClient
的项目。在子文件夹ReadAll.sql
中有一个名为AuthenticationAttempt\Script
的文件。我想获取该文件的内容。这是代码
var manifestResourceName = "Stamina.World.DataAccess.SqlClient.AuthenticationAttempt.Script.ReadAll.sql";
var contents = string.Empty;
// this assumes the file is in the current assembly
var currentAssembly = this.GetType().Assembly;
using (var manifestResourceStream = currentAssembly.GetManifestResourceStream(manifestResourceName))
{
if (manifestResourceStream == null)
{
// TODO : handle this
}
using (var streamReader = new System.IO.StreamReader(manifestResourceStream))
{
contents = streamReader.ReadToEnd();
}
}
// do something with the file contents