代码之家  ›  专栏  ›  技术社区  ›  vfilby

我是否可以使用反射来查找asp.net中的bin/[configuration]文件夹,而不是asp临时文件夹

  •  6
  • vfilby  · 技术社区  · 15 年前

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

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

    由于每个dll在temp asp.net文件下都有自己的目录,这对我来说是失败的。

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

    笔记

    • 此代码位于支持库中,可以从ASP.NET网站或其他控制台/Windows应用程序调用。
    3 回复  |  直到 15 年前
        1
  •  13
  •   Zhaph - Ben Duguid    15 年前

    你可以试试 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);
          }
        }
      }
      

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

    文件:C:\用户\ 用户名 \文档\ Visual Studio 2008 \网站\ 解决方案 \ 项目

    这就是我所期望的。

        2
  •  4
  •   Bryan    15 年前

    server.mappath(“~\bin”)

        3
  •  0
  •   Paul    15 年前

    有什么理由不去做

    Server.MapPath("~/bin");
    

    ?