AppDomain.BaseDirectory()与HttpContext.Current.Server.MapPath

本文关键字:Current Server MapPath HttpContext BaseDirectory AppDomain | 更新日期: 2023-09-27 18:22:04

我花了几个小时试图找到一个好的答案。。如何将XML文件加载到类库中。我已经四处查看了这个问题的具体答案,如果有人问我这个问题,我的措辞并没有让我得到一个像样的答案。

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

我有一个项目,我正在构建一个类库,它将用于各种功能,并在应用程序、桌面、网络、内部等的多种表现形式中使用……所以我需要能够依赖返回的路径。

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

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";

AppDomain.BaseDirectory()与HttpContext.Current.Server.MapPath

为什么不给DLL中的类提供一个包含xml的Stream?然后,使用DLL的程序可以决定从哪里获得流,也许是文件,或者从内存或任何地方。

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

我会使用AppDomain.CurrentDOmain.BaseDirectory。如果你查看Assembly.Location的文档,你会发现为什么它可能不合适。