0

我有一些位于外部程序集中的 XML 文件。我有一个引用外部程序集的 windows 应用程序,但是当我运行 windows 应用程序并尝试从文件中读取时,它使用 windows 应用程序路径而不是文件所在的程序集路径。

外部程序集位于 c:\service\tp.dll

Windows 应用程序位于 c:\project\windows\bin。

tp.dll 包含一个调用 File.OpenRead 的方法,但是当我执行 windows 应用程序并从 tp.dll 调用该方法时,它使用的是 windows 应用程序路径而不是 tp 应用程序路径。

4

2 回答 2

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");
于 2013-08-13T16:00:49.873 回答
1

可能会放一些更多的描述和一些代码。重要 - 您如何加载程序集 - 您如何访问 XML 文件。

于 2013-08-13T15:57:05.720 回答