如何访问程序集文件夹中的XML文件的文件路径?
在我的.NET程序集中,我需要访问一个XML文件,该文件位于我的类组装项目的“导入”文件夹中。如何访问程序集文件夹中的XML文件的文件路径?
我该怎么做?几乎像ASP.NET Server.MapPath()
,但对于程序集。我不想获取正在执行的程序集的反射方法,因为它指向GAC文件夹。我想要当前项目的文件夹。
我也需要这个在部署时工作。基本上它是使用EF Code First数据库初始化程序导入XML文件并插入种子数据。这是在Global.asax.cs中引导的。我需要它在开发和实时目标上都能够工作。
- Visual Studio中 - >项目(如XML文件) - >属性 - >生成操作 - >嵌入的资源
Assembly.GetExecutingAssembly().GetManifestResourceStream(path)
将路径和/或文件名添加到应用程序/ web.config文件中,并使用核心System.Configuration程序集中的功能来检索该值。
如何使用:Environment.CurrentDirectory
查看this question了解更多信息。
更新:
对于asp.net,你可以使用Request.PhysicalApplicationPath
问题是我在我的数据服务程序集中首先使用EF代码,因此无法访问该级别的HttpContext。 – jaffa 2011-06-08 14:11:23
你可以使用
HttpRuntime.AppDomainAppPath
http://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainapppath.aspx
没有这样的东西作为一个程序集的当前项目的文件夹。那么,你真的想要什么? – 2011-06-08 14:02:39
@Daniel,好的,如果我的项目中有一个XML,我需要阅读XML文件,XML文件在哪里去,我该如何访问它? – jaffa 2011-06-08 14:07:39
您是否已将文件导入程序集作为嵌入式资源?如果是,请说出来;否则你无法访问它。 – abatishchev 2011-06-08 14:08:17