【问题标题】:How to get file path of content in class library如何获取类库中内容的文件路径
【发布时间】:2012-10-20 02:26:11
【问题描述】:

我有一个 Excel 文件,它在类库中具有 content 的构建操作。 ASP.NET WebForms 应用程序和控制台应用程序都引用了该库,并且两者都使用 Excel 文件。有没有办法以编程方式获取此文件的文件路径?

我知道在 ASP 中我可以做到这一点:

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

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

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

这些工作,但我想知道是否有更好、更统一的方法来从程序集中查找文件并返回路径。

【问题讨论】:

    标签: c# class-library


    【解决方案1】:

    第二种方法在所有环境中都可以正常工作,您只需对其进行更改,使其不查找条目程序集,而是查找特定程序集。

    最简单的方法是:

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

    另一种方法是使用嵌入式资源,以便您可以直接从程序集中加载文件。当然,如果文件必须是用户可写的,这将不起作用。

    【讨论】:

    • 嵌入式资源不能很好地工作,因为我们必须与 excel 文件(呃)进行 com 互操作,并且需要它在磁盘上。我希望避免在bin 目录中执行MapPath 或Path.Combine 并找到文件,但可能没有其他方法......
    • 您始终可以将嵌入资源中的文件保存到临时目录中,然后在那里进行互操作。如果多个进程接触文件或excel由于某种原因挂起并且没有释放文件,它也可以防止出现问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2019-08-17
    • 1970-01-01
    • 2017-05-08
    • 2012-08-15
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多