C# 获取嵌入资源的完整路径?

6 浏览
0 Comments

C# 获取嵌入资源的完整路径?

我正在使用一个.NET组件,该组件使用一个期望包含完整路径名称的字符串的方法来读取特定的二进制文件,就像这样:

Read("c:\\somefile.ext");

我已经将somefile.ext作为一个嵌入资源放入我的项目中。是否有任何方法可以将嵌入资源的某种路径提供给组件的Read命令?

0
0 Comments

C#中获取嵌入资源的完整路径

问题原因:

问题是关于如何获取C#中嵌入资源的完整路径。嵌入资源在C#中通常是以命名空间、项目文件夹、文件名和扩展名的形式表示。但是,有时候需要获取完整的资源路径,以便读取或保存资源的内容。

解决方法:

为了解决这个问题,可以使用一个辅助类来获取资源的完整路径。下面是一个示例的辅助类:

public class ResourceReader
{
    // 以流的形式读取文件
    public static Stream GetResourceStream(string resourceName)
    {
        Assembly assembly = Assembly.GetExecutingAssembly();
        Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
        return resourceStream;
    }
    // 将资源保存到文件
    public static void CreateFileFromResource(string resourceName, string path)
    {
        Stream resourceStream = GetResourceStream(resourceName);
        if (resourceStream != null)
        {
            using (Stream input = resourceStream)
            {
                using (Stream output = File.Create(path))
                {
                    input.CopyTo(output);
                }
            }
        }
    }
}

感谢Shamp的回答,这个辅助类非常有效地提取了嵌入文件。Stream类有一个CopyTo方法,可以用来代替你的CopyStream方法。更多关于CopyTo方法的信息可以在msdn.microsoft.com/en-us/library/dd782932.aspx上查看。

0
0 Comments

问题出现的原因是:在C#中获取嵌入资源的完整路径时,需要使用项目的命名空间和嵌入资源的名称。如果嵌入资源位于项目中的resources/files文件夹中,项目的命名空间为ProjectA,那么正确的字符串应该是ProjectA.resources.files.somefile.ext。

解决方法如下:

string resourcePath = "ProjectA.resources.files.somefile.ext";

这样就可以获取嵌入资源的完整路径了。

0