我有一些位于外部程序集中的XML文件。我有一个引用外部程序集的Windows应用程序,但是当我运行Windows应用程序并尝试从文件中读取时,它使用Windows应用程序路径而不是文件所在的程序集路径。
外部程序集位于c:\ service \ tp.dll
中Windows应用程序位于c:\ project \ windows \ bin。
tp.dll包含一个调用File.OpenRead的方法,但是当我执行windows应用程序并从tp.dll调用该方法时,它使用的是Windows应用程序路径而不是tp应用程序路径。
答案 0 :(得分:2)
假设您编写了外部程序集并知道应该在哪里,您是否尝试使用Assembly类来引用它?
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx
我使用这个类来加载在我当前正在执行的程序集中嵌入了构建操作的文件,但我不明白为什么你不能用这个类加载另一个程序集然后调用.GetManifestResourceStream(文件的路径)你想要的方法。
以下是我如何使用它从当前程序集加载嵌入数据。将.GetExecutingAssembly()更改为.Load()方法。
Assembly loader = Assembly.GetExecutingAssembly();
var rawstream = loader.GetManifestResourceStream(template);
byte[] byteArray = rawstream.ReadToEnd();
在查看MSDN文档之后,这可能是您启动程序集引用所需的内容:
Assembly SampleAssembly = Assembly.Load
("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3");
答案 1 :(得分:1)
可能会提供更多描述和一些代码。重要 - 如何加载组件 - 您如何访问XML文件。