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";
为什么不给DLL中的类提供一个包含xml的Stream?然后,使用DLL的程序可以决定从哪里获得流,也许是文件,或者从内存或任何地方。
namespace MyNameSpace
{
public class MyClass
{
public void LoadXML(Stream xmlStream)
{
}
}
}
我会使用AppDomain.CurrentDOmain.BaseDirectory
。如果你查看Assembly.Location的文档,你会发现为什么它可能不合适。