AppDomain.BaseDirectory()vs HttpContext.Current.Server.MapPath()vs ??在类库中加载XML文件

时间:2012-02-01 18:25:44

标签: c# xml

我花了几个小时试图找到一个好的答案..如何将XML文件加载到类库中。我已经检查过这个问题的具体答案,如果有人问这个问题,那么措辞的措辞并不能让我找到一个合适的答案。

我只需要能够在没有Web依赖引用的类库中引用XML文件。

我有一个项目,我正在构建一个类库,它将用于各种功能,以及应用程序,桌面,Web,内部等的多种表现形式......所以我需要成为能够依赖返回的路径。

我曾考虑将物理路径设置为AppSetting或类似,但我宁愿不必在bin目录中直接使用.xml文件(始终复制),然后从那里引用它。 。

Assembly.GetExecutingAssembly().Location // base .net directory? windows/.net/...
AppDomain.CurrentDomain.BaseDirectory // based directory of app that references .dll

(也许我误解/误用上述内容?)

基本上我想引用该文件。我知道我之前已经这样做了,但此刻它完全逃脱了我,我无法找到引导我的资源。我期待一堆对其他堆栈帖子的引用,如果其中一个工作,那么不管怎样,不要发一个说HttpContext.Current就是解决方案

更新:::

感谢您的快速解答..

这种作品,但我不想进入应用程序:

AppDomain.CurrentDomain.BaseDirectory +“\ BIN \ DataXML \ TaskData.xml”;

2 个答案:

答案 0 :(得分:1)

为什么不为包含xml的Stream的DLL中的类提供信息?然后,使用您的DLL的程序可以决定从哪里获取流,可能是文件,或从内存或任何地方。

namespace MyNameSpace
{
 public class MyClass
 {
  public void LoadXML(Stream xmlStream)
  {
  }
 }
}

答案 1 :(得分:0)

我会使用AppDomain.CurrentDOmain.BaseDirectory。如果您查看the documentation for Assembly.Location,就会明白为什么它可能不合适。