我可以使用reflection来查找ASP.NET中的bin / 文件夹而不是asp临时文件夹

我有一个ASP.NET网站,我想找到/ bin / [Configuration]文件夹使用外部工具(exe文件)。 当我使用reflection来获取调用程序集位置时,它返回类似于:

C:\Windows\Microsoft.NET\Framework\\...\Temporary ASP.NET Files\a1388a5e\\...\my.dll

由于每个dll在临时ASP.NET文件下都有自己的目录,因此对我来说失败了。

如何获取已编译的二进制文件夹的位置,其中dll和.exe是(即bin /)而不是asp.net的临时缓存?

笔记

  • 此代码位于支持库中,可以从ASP.NET网站或其他控制台/ Windows应用程序调用。

您可以尝试(取自如何:获取应用程序目录 ):

 Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 

我设置了一个快速测试:

  • 在VS dev服务器(编译的站点,/ bin目录等)下运行的Web应用程序项目。
  • 由WA引用的类库项目。
  • 在Web应用程序中,我创建了一个从库项目中调用以下方法的页面:

     using System.IO; using System.Reflection; namespace TestHelpers { public class ClassHelpers { public static string PathToBin() { return Path.GetDirectoryName( Assembly.GetExecutingAssembly().GetName().CodeBase); } } } 

这导致页面上的以下输出:

file:\ C:\ Users \ UserName \ Documents \ Visual Studio 2008 \ Websites \ Solution \ Project \ bin

这是我所期待的。

使用Server.Mappath( “〜\ BIN”)

任何理由不做

 Server.MapPath("~/bin");