Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取类库中内容的文件路径_C#_Class Library - Fatal编程技术网

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

C# 如何获取类库中内容的文件路径,c#,class-library,C#,Class Library,我有一个Excel文件,它在类库中具有content的构建操作。ASP.NET WebForms应用程序和控制台应用程序都引用该库,两者都使用Excel文件。有没有一种方法可以通过编程获得此文件的文件路径 我知道在ASP中我可以做到这一点: HttpContext.Current.Server.MapPath(@"bin") Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) 在控制台应用

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

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

HttpContext.Current.Server.MapPath(@"bin")
Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
在控制台应用程序中,我可以执行以下操作:

HttpContext.Current.Server.MapPath(@"bin")
Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)

这些方法很有效,但我想知道是否有更好的整合方法从程序集中查找文件并返回路径。

第二种方法在所有环境中都很有效,您只需更改它,使其不查找条目程序集,而是查找特定程序集

最简单的方法是:

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

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

嵌入式资源不会很好地工作,因为我们必须与excel文件(ugh)进行com互操作,并且需要将其保存在磁盘上。我希望避免使用
映射路径
路径。将
合并到
bin
目录中并查找文件,但可能没有其他方法……您可以始终将嵌入资源中的文件保存到temp目录中,然后在那里执行互操作。如果多个进程因某种原因接触文件或excel挂起且无法释放文件,它还可以防止出现问题。