C# 当资源的build acction设置为none时,如何获取资源?

C# 当资源的build acction设置为none时,如何获取资源?,c#,resources,C#,Resources,看看这个简单的控制台应用程序: 如果TextFile1.txt的build action设置为none,我对如何获取其内容非常好奇: 如何使用Resources.resx读取TextFile1.txt的内容?如果将构建操作设置为embedded resource,我知道如何读取。但是,当它的构建操作被设置为“无”时,您该如何做呢换句话说,我想知道Resource1.resx是如何获取TextFile1.txt的内容的。简短回答:你不能像resx那样做,因为需要一个特殊的“工具链魔法”来支持这

看看这个简单的控制台应用程序:

如果TextFile1.txt的build action设置为none,我对如何获取其内容非常好奇:


如何使用Resources.resx读取TextFile1.txt的内容?如果将构建操作设置为embedded resource,我知道如何读取。但是,当它的构建操作被设置为“无”时,您该如何做呢换句话说,我想知道Resource1.resx是如何获取TextFile1.txt的内容的。

简短回答:你不能像resx那样做,因为需要一个特殊的“工具链魔法”来支持这一点

VisualStudio对嵌入resx文件引用的资源进行了特殊处理

资源resx文件使用XML语法描述进入资源的内容。如果在文本编辑器中打开该文件,您将看到如下内容:

<data name="TextFile1" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>textfile1.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>

textfile1.txt;字符串,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089;utf-8
编译项目时,此文件由resx文件的自定义工具集ResXFileCodeGenerator处理。当它看到
ResXFileRef
类型的数据节点时,它读取
TextFile1.txt
的内容,并将其嵌入到
Resource1
的编译版本中


该工具忽略文件本身的
None
/
不复制
设置。事实上,如果将Build Action属性设置为“Embed resource”,则文件内容将嵌入两次。

如果将其设置为
None
,则无法嵌入。因为如果这样做,资源将被排除在编译之外@“Resource1.resx如何获取TextFile1.txt的内容”这个问题仍然存在。当您向.resx文件添加资源时,它将在解决方案中创建一个名为“Resources”的文件夹,在那里您的文件具有
构建操作
,那么
Resource1.resx
是如何做到的呢?您可以查看
Resource1.Designer.cs
代码,了解它是如何工作的。在我的例子中,用一个图像尝试了它,它生成了以下代码
internal static System.Drawing.Bitmap Image1{get{object obj=ResourceManager.GetObject(“Image1”,resourcecurity”);return((System.Drawing.Bitmap)(obj));}
-现在,跟着兔子进入教室hole@RandRandom嗯,我想这是有道理的,但有两个问题听起来像是对立的。一个是,没有Resources.resx我如何读取文本文件,另一个是Resources.resx如何读取文件。