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()
以了解编译器决定调用它的内容。