C# 获取映像的资源文件夹路径

C# 获取映像的资源文件夹路径,c#,C#,我问是因为我已经到处找了,但没有找到结果 我已经尝试过这两种方法: //first attempt   Var filePath = System.Reflection.Assembly.GetExecutingAssembly (). Location + @"\..\..\Resources\Image.jpg"; //Second attempt System.Reflection.Assembly.GetExecutingAssembly (). GetManifestResource

我问是因为我已经到处找了,但没有找到结果

我已经尝试过这两种方法:

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

//Second attempt
System.Reflection.Assembly.GetExecutingAssembly (). GetManifestResourceNames ();
已经探索了这些方法,在这些方法中,它们没有给出结果,我只需要获得我的项目图像的路径。
请提供帮助。

确保将项目的生成操作设置为嵌入式资源

您可能会发现这两种方法很有用,传入资源的
名称和
程序集的列表
——它将按顺序搜索程序集,从而提供简单的覆盖资源功能

    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;
    }
私有静态元组FindEmbeddedResource(字符串名称,参数程序集[]程序集)
{
foreach(程序集中的变量程序集)
{
var resourceName=assembly.GetManifestResourceNames().FirstOrDefault(r=>r.EndsWith(name));
if(resourceName!=null)
{
返回新元组(程序集、资源名称);
}
}
返回新元组(null,null);
}
/// 
///按提供的顺序获取嵌入式资源扫描程序集。允许API覆盖库资产。
/// 
///名字。
///大会。
/// 
私有静态字符串GetEmbeddedResource(字符串名称,参数程序集[]程序集)
{
var embeddedResource=FindEmbeddedResource(名称、程序集);
var assembly=embeddedResource.Item1;
var-resource=embeddedResource.Item2;
如果(程序集!=null)
{
var stream=assembly.GetManifestResourceStream(资源);
使用(var textStreamReader=新StreamReader(stream))
{
resource=textStreamReader.ReadToEnd();
}
}
返回资源;
}

路径字符串中的所有那些双反斜杠和空格都会影响您的结果。部署的应用程序中没有资源文件夹。谢谢,但如何在变量中仅找到名称?如果
Image.jpg
是嵌入式资源,则可以使用
yourAssembly.GetManifestResourceNames()
以了解编译器决定调用它的内容。