简体   繁体   English

获取图像的资源文件夹路径

[英]Get the resource folder path of an image

I ask because I already searched everywhere without finding results... 我问是因为我已经到处搜索但没有找到结果...

I already try these two methods: 我已经尝试过这两种方法:

//first attempt
  Var filePath = System.Reflection.Assembly.GetExecutingAssembly (). Location + @"\..\..\Resources\Image.jpg";

//Second attempt
System.Reflection.Assembly.GetExecutingAssembly (). GetManifestResourceNames ();

Already probe these methods in which they did not give results I only need to obtain the route of an image of my project. 已经探究了这些方法并没有给出结果,我只需要获取项目图像的路径即可。 help please. 请帮助。

Make sure the Build Action of your item is set to Embedded Resource. 确保您的项目的“生成操作”设置为“嵌入式资源”。

You might find these two methods useful, pass in the name of the resource and a list of assemblies -- it'll search the assemblies in order which provides a simple override resource capability 您可能会发现这两个方法很有用,传入资源nameassemblies列表-它将按顺序搜索程序集,从而提供简单的覆盖资源功能

    private static Tuple<Assembly, string> FindEmbeddedResource(string name, params Assembly[] assemblies)
    {
        foreach (var assembly in assemblies)
        {
            var resourceName = assembly.GetManifestResourceNames().FirstOrDefault(r => r.EndsWith(name));

            if (resourceName != null)
            {
                return new Tuple<Assembly, string>(assembly, resourceName);
            }
        }

        return new Tuple<Assembly, string>(null, null);
    }

    /// <summary>
    /// Gets the embedded resource scanning assemblies in the order supplied. Allows APIs to override library assets.
    /// </summary>
    /// <param name="name">The name.</param>
    /// <param name="assemblies">The assemblies.</param>
    /// <returns></returns>
    private static string GetEmbeddedResource(string name, params Assembly[] assemblies)
    {
        var embeddedResource = FindEmbeddedResource(name, assemblies);
        var assembly = embeddedResource.Item1;
        var resource = embeddedResource.Item2;

        if (assembly != null)
        {
            var stream = assembly.GetManifestResourceStream(resource);
            using (var textStreamReader = new StreamReader(stream))
            {
                resource = textStreamReader.ReadToEnd();
            }
        }

        return resource;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM