Answers:
右键单击项目文件,选择“属性”。
在打开的窗口中,转到“资源”选项卡,如果它在选项卡页面的中间只有一个蓝色链接,请单击它以创建新资源。
然后从选项卡页面上方的工具栏中,选择添加一个新的文本文件,为其命名,它将被添加到您的项目中并打开。
如果到此为止,则可以在代码中键入Resources.TheNameYouGaveTheTextFileHere,然后访问其内容。请注意,第一次在类中使用Resources类时,需要添加using指令(在键入Resources获得菜单以使VS为您完成操作后,按Ctrl +。)。
如果上述说明不清楚,请留下评论,我将对其进行编辑,直到完成或有意义为止:)
Properties\Resources.Designer.cs
有namespace YourProjectRootNamespace.Properties
,所以你必须使用YourProjectRootNamespace.Properties
。ProjectRootNamespace
在VisualStudio中的项目属性中定义。
在Visual Studio 2003,Visual Studio 2005以及可能的早期版本中(在2008年同样适用),您可以在项目中包含文本文件,然后在“属性”面板中,将操作设置为“嵌入资源”。然后,您可以使用来作为流访问文件Assembly.GetManifestResourceStream(string)
。
这里的其他答案更方便。为了完整起见,我将其包括在内。
请注意,此方法将适用于嵌入其他类型的文件,例如图像,图标,声音等。
嵌入文本文件后,可以在代码中的任何位置使用该文件,如下所示...
global::packageName.Properties.Resources.ThatFileName
ThatFileName
要从变量指定怎么办?
是的,您是正确的-创建资源文件。如果执行此操作,则无需“加载”字符串,它将被引用为Resource.WhateverStringYouDefined。
这对我有用。(我需要读取嵌入到可执行.NET图像文件中的文件的内容。)
在执行任何操作之前,请将文件包含在Visual Studio中的解决方案中。(在我的情况下是VS 2017社区。)我切换到Solution Explorer
,然后右键单击Properties
文件夹,选择Add Existing Item
并选择了文件。(说,FileName.txt
。)然后,仍然在中Solution Explorer
,右键单击包含的文件,选择Properties
,然后选择Build Action
为Embedded Resource
。
然后使用此代码读取其字节:
string strResourceName = "FileName.txt";
Assembly asm = Assembly.GetExecutingAssembly();
using( Stream rsrcStream = asm.GetManifestResourceStream(asm.GetName().Name + ".Properties." + strResourceName))
{
using (StreamReader sRdr = new StreamReader(rsrcStream))
{
//For instance, gets it as text
string strTxt = sRdr.ReadToEnd();
}
}
注意,在这种情况下,你并不需要该文件作为资源添加作为提出接受的答案。
添加到Pavan的答案中,以获取当前的程序集(在常规部分中):
Assembly _assembly;
GetManifestResourceStream(文件名)(在代码中,需要从资源中读取):
try
{
_assembly = Assembly.GetExecutingAssembly();
_textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("*Namespace*.*FileName*.txt"));
}
catch
{
Console.WritelLine("Error accessing resource!");
}