猿问

这个是为什么?我就是无法生成那个流?该怎么改?

有一个a.dll,它其中有一个b.xml是嵌入的资源。现在我希望通过反射在我自己的程序中把这个a.dll中的b.xml的内容给读出来,请详细写清楚方法。多谢了
我换成LoadFile的时候,它也是报“未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“Biz.Client.SM.CreateAccount.Version.xml.resources”正确嵌入或链接到程序集“Biz.Client.SM.CreateAccount”,或者确保所有需要的附属程序集都可加载并已进行了完全签名。”

慕哥6287543
浏览 125回答 3
3回答

www说

System.Reflection.Assembly dll = System.Reflection.Assembly.LoadFile("文件路径");Stream xmls = dll.GetManifestResourceStream("a.dll的命名空间.项目中的文件路径.文件名");后面就可以把这个xml作为正常的xml文件的流来使用了。不好意思,只是按照自己的想法写的。没有去实践。这个问题是我写错函数了。用load函数的话。参数是dll的命名空间。我已经改了上面的source。你试一下。试了一下,这样就好用了。LoadFile,中的参数是你的dll的路径。不是xml的路径。

宝慕林4294392

System.Reflection.Assembly dll = System.Reflection.Assembly.LoadFile("文件路径"); Stream xmls = dll.GetManifestResourceStream("a.dll的命名空间.项目中的文件路径.文件名");

杨魅力

以下是我的代码将我的自定义类的内容去掉以后就是获取DLL的嵌入资源的代码了using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace Madison.Server.MethodFactory{public class MethodFactory{private static Assembly dllAssembly = null;private MethodFactory() { }private static List<MadisonMethodInfo> allMethodInfo = new List<MadisonMethodInfo>();public static MethodFactory LoadDll(string dllFilePath){dllAssembly = Assembly.LoadFile(dllFilePath);var allTypes = dllAssembly.GetTypes();LoadAllMethod(allTypes.ToList());return new MethodFactory();}private static void LoadAllMethod(List<Type> allTypes){if (allTypes.Count > 1){var typeMethods = allTypes[0].GetMethods();for (int i = 0; i < typeMethods.Count(); i++){if (typeMethods[i].GetCustomAttribute(typeof(MadisonMethodAttribute)) != null&&(typeMethods[i].GetCustomAttribute(typeof(MadisonMethodAttribute)) as MadisonMethodAttribute).UsingMethod){allMethodInfo.Add(MadisonMethodInfo.Create(typeMethods[i]));}}}}}}&nbsp;
随时随地看视频慕课网APP
我要回答