C# 如何获取被占用资源的路径?

C# 如何获取被占用资源的路径?,c#,file,resources,C#,File,Resources,我在我的C#项目中包括了一个被挪用的资源;我知道它的名称以及如何引用它,所以我想知道是否有任何方法可以获得它的绝对路径……有吗?嵌入式资源就是:嵌入式。这意味着,它包含在程序集中,在编译后不作为物理文件存在(如果您正在查找的话)。嵌入式资源就是:嵌入式。这意味着,它包含在程序集中,在编译后不作为物理文件存在(如果您正在查找的话)。正如其他人所说,嵌入式资源嵌入在已编译的程序集中,而不存在于文件系统中;如果要在文件系统上保存该文件,则应将生成操作更改为“无”,并将复制到输出目录更改为其中一个复制值

我在我的C#项目中包括了一个被挪用的资源;我知道它的名称以及如何引用它,所以我想知道是否有任何方法可以获得它的绝对路径……有吗?

嵌入式资源就是:嵌入式。这意味着,它包含在程序集中,在编译后不作为物理文件存在(如果您正在查找的话)。

嵌入式资源就是:嵌入式。这意味着,它包含在程序集中,在编译后不作为物理文件存在(如果您正在查找的话)。

正如其他人所说,嵌入式资源嵌入在已编译的程序集中,而不存在于文件系统中;如果要在文件系统上保存该文件,则应将生成操作更改为“无”,并将复制到输出目录更改为其中一个复制值

但是,如果确实要嵌入资源,则可以使用Assembly类的GetManifestResourceStream方法访问该资源,如下所示:

GetType().Assembly.GetManifestResourceStream("someresourcestringhere")
(以上代码假定您正在从同一程序集中的类访问资源)

嵌入式资源通常遵循以下格式,这是传递给GetManifestResourceStream方法的字符串:

默认项目名称空间.folder name(如果有).文件名

文件夹名中的任何空格都将替换为下划线,文件名中的任何空格都将保留


就我个人而言,我发现获取此字符串的最简单方法是使用反编译器工具(如Telerik的Just Decompile)查看程序集内部,并获取所查找文件的完整资源名。

如其他人所说,嵌入式资源嵌入在已编译程序集中,并且不存在于文件系统上;如果要在文件系统上保存该文件,则应将生成操作更改为“无”,并将复制到输出目录更改为其中一个复制值

System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
但是,如果确实要嵌入资源,则可以使用Assembly类的GetManifestResourceStream方法访问该资源,如下所示:

GetType().Assembly.GetManifestResourceStream("someresourcestringhere")
(以上代码假定您正在从同一程序集中的类访问资源)

嵌入式资源通常遵循以下格式,这是传递给GetManifestResourceStream方法的字符串:

默认项目名称空间.folder name(如果有).文件名

文件夹名中的任何空格都将替换为下划线,文件名中的任何空格都将保留


就我个人而言,我发现获取此字符串的最简单方法是使用反编译工具(如Telerik的Just Decompile)查看程序集内部,并获取您要查找的文件的完整资源名。

从哪些信息获取其绝对路径?你到底在想什么样的“绝对路径”?如果你能给出一个具体的例子,这会有所帮助。我想在我的项目中包含一个INI文件,然后读取它…如果它是一个嵌入式资源,它就在程序集中。在这一点上,你所说的“它的绝对路径”是什么意思?这不是一个你可以直接引用的文件。如果我在我的项目中添加一个文件而不嵌入它呢?有没有办法得到它的绝对路径?我想你没有抓住要点:你不需要文件路径来引用嵌入的资源。你说过你知道如何引用它…从什么信息得到它的绝对路径?你到底在想什么样的“绝对路径”?如果你能给出一个具体的例子,这会有所帮助。我想在我的项目中包含一个INI文件,然后读取它…如果它是一个嵌入式资源,它就在程序集中。在这一点上,你所说的“它的绝对路径”是什么意思?这不是一个你可以直接引用的文件。如果我在我的项目中添加一个文件而不嵌入它呢?有没有办法得到它的绝对路径?我想你没有抓住要点:你不需要文件路径来引用嵌入的资源。你确实说过你知道如何引用它……我知道这是一个相当古老的答案,但我想要的一点信息似乎在打字错误中丢失了!您说过“任何空格都将替换为空格”。它们到底被什么取代了?我知道这是一个相当古老的答案,但我想要的一点信息似乎在输入错误中丢失了!您说过“任何空格都将替换为空格”。它们真正被什么取代了?非常有用!非常感谢。您能为我尝试使用反射查找的.xml文件提供一个替代方案吗?谢谢嵌入式资源使用简单,无需反射。如果您希望嵌入数据(即构建后不可配置),请使用它们。否则,您可能希望使用
Content
build操作在生成后将文件放置到位-在这种情况下,使用良好的旧I/O API访问它。非常有用!非常感谢。您能为我尝试使用反射查找的.xml文件提供一个替代方案吗?谢谢嵌入式资源使用简单,无需反射。如果您希望嵌入数据(即构建后不可配置),请使用它们。否则,您可能希望使用
Content
build操作在生成后将文件放置到位-在这种情况下,使用良好的旧I/O API来访问它。
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();