如何在类库中获取内容的文件路径

8

我有一个Excel文件,它在类库中的Build Action为content。该类库被ASP.NET WebForms应用程序和控制台应用程序引用,并且Excel文件两者都使用。是否有方法可以编程获取此文件的文件路径?

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

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

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

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

这些方法可以用,但我在想是否有更简洁的方式从程序集中查找文件并返回路径。

1个回答

2
第二种方法在所有环境中都可以正常工作,你只需要将其更改为不寻找入口程序集而是特定的程序集即可。
最简单的方法是:
typeof(Some.Type.From.That.Assembly).Assembly.Location

另一种选择是使用嵌入资源,这样可以直接从程序集中加载文件。当然,如果该文件需要用户进行写操作,则此方法无法使用。


一个嵌入式资源不太适用,因为我们需要与 Excel 文件进行 com 互操作(呃),并且需要将其保存在磁盘上。我希望避免使用 MapPathPath.Combinebin 目录中查找文件,但可能没有其他方法... - Dave Zych
您可以将嵌入式资源中的文件保存到临时目录中,然后在那里进行Interop操作。这也可以防止多个进程触及文件或Excel因某种原因挂起并未释放文件而导致问题。 - Knaģis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接