如何在.NET程序集中嵌入一个文本文件?

9 浏览
0 Comments

如何在.NET程序集中嵌入一个文本文件?

我想将一个文本文件嵌入到一个程序集中,这样我就可以加载文本而不必从磁盘上读取它,并且我所需要的一切都包含在可执行文件中(这样更便携)。

有办法实现这个吗?我猜应该与资源文件有关吧?

如果可以的话,你如何做到这一点,以及如何通过编程将文本加载到字符串中?

0
0 Comments

如何在.NET程序集中嵌入一个文本文件?

在项目文件上右键点击,选择属性。

在打开的窗口中,转到资源选项卡,如果选项卡中间只有一个蓝色的链接,点击它以创建一个新资源。

然后从选项卡上方的工具栏中选择添加一个新的文本文件,给它一个名称,它将被添加到你的项目并打开。

如果你完成了上述步骤,你可以在代码中输入Resources.你给文本文件取的名称,然后你就可以访问它的内容了。注意,在类中首次使用资源类时,你需要添加一个using指令(在输入Resources后按下Ctrl+.来获取菜单,让VS为你完成)。

如果对上述描述有任何不清楚的地方,请留下评论,我会进行编辑,直到完整或有意义为止 🙂

using指令的代码应该是什么样的?我在尝试做这个操作时遇到了困难。我已经将solutions.txt添加为资源,但它找不到Resources.solutions - 我觉得我漏掉了using指示符。

啊哈,我只需在前面加上My.(即My.Resources.solutions)就可以了。很简单!

添加资源将会生成并包含Properties\Resources.Designer.cs,其中有namespace YourProjectRootNamespace.Properties,因此你需要使用YourProjectRootNamespace.Properties。在VisualStudio中,ProjectRootNamespace在项目属性中定义。

如果我以这种方式添加一个文本文件,并且将该文件作为我的解决方案的一部分...如果该文件被更新并重新构建程序集,那么嵌入的资源也会被更新吗?还是我需要手动删除/重新添加文件,如果我要更改它?

文件在编译时被打包为资源,而不是在添加它们时。你可以自由地在任何工具中更改文件并重新构建,这些更改将成为你程序集的一部分。

0
0 Comments

问题的出现原因是,开发人员想要在.NET程序集中嵌入一个文本文件,以便在运行时可以访问该文件。

解决方法是,在Visual Studio中将文本文件包含在项目中,并在“属性”面板中将其操作设置为“嵌入的资源”。然后,可以使用Assembly.GetManifestResourceStream(string)方法将该文件作为流来访问。

值得注意的是,这种方法也适用于嵌入其他类型的文件,如图像、图标、声音等。

需要注意的是,在调用GetManifestResourceStream()方法时,需要使用命名空间+文件名作为参数,例如"MyNamespace.MyTextfile.txt"。还可以调用GetManifestResourceNames()方法来获取所有名称的列表。

0
0 Comments

问题:如何将文本文件嵌入到.NET程序集中?

在.NET程序集中嵌入文本文件有以下好处:1.如果资源被移除,编译器会报错;2.消除了拼写错误。下面的代码展示了如何在代码中使用嵌入的文本文件:

global::packageName.Properties.Resources.ThatFileName

如果想要在C# DLL级别将嵌入的文本文件写回到文件中,可以使用以下代码:

using System.IO;
using System.Reflection;
string resourceName = "packageName.Properties.Resources.ThatFileName";
string filePath = "C:\\path\\to\\file.txt";
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
{
    using (StreamReader reader = new StreamReader(stream))
    {
        string fileContent = reader.ReadToEnd();
        File.WriteAllText(filePath, fileContent);
    }
}

如果想要从变量中指定ThatFileName,可以使用以下代码:

string fileName = "ThatFileName";
string resourceName = $"packageName.Properties.Resources.{fileName}";

以上就是如何将文本文件嵌入到.NET程序集中以及解决相关问题的方法。

0