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

时间:2010-03-11 18:58:40

标签: c# asp.net reflection

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

的内容

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

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

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

备注

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

3 个答案:

答案 0 :(得分:13)

您可以尝试(取自How to: Get the Application Directory):

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 \ 解决方案 \ 项目 \ bin

这是我所期待的。

答案 1 :(得分:4)

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

答案 2 :(得分:0)

任何不做的理由

Server.MapPath("~/bin");