2012-10-30 131 views
6

我有一个Excel文件,其类库中具有content的构建操作。该库由ASP.NET WebForms应用程序和控制台应用程序引用,并且Excel文件由两者一起使用。有没有办法我可以编程获取这个文件的文件路径?如何获取类库中内容的文件路径

我知道在ASP中我可以这样做:

HttpContext.Current.Server.MapPath(@"bin") 

并在控制台应用程序,我可以这样做:

Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) 

这些工作,但我不知道是否有更好的,合并从程序集中找到文件并返回路径的方法。

回答

1

第二种方法在你应该改变它的所有环境中工作正常,以便它不寻找入口组件但是特定组件。要做到这一点

最简单方法是:

typeof(Some.Type.From.That.Assembly).Assembly.Location 

另一种方法是使用嵌入的资源,这样就可以从组件直接加载文件。当然,如果文件必须由用户写入,这将不起作用。

+0

嵌入式资源不能很好地工作,因为我们必须与excel文件(ugh)进行互操作并在磁盘上使用它。我希望避免在'bin'目录中执行'MapPath'或'Path.Combine'并找到该文件,但可能没有其他方法... –

+0

您可以随时将文件从嵌入式资源保存到临时目录然后在那里进行交互。如果多个进程触及该文件,或者出于某种原因导致excel挂起并且不释放该文件,它也可以防止问题。 –