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

vfi*_*lby 6 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应用程序调用.

Zha*_*uid 13

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

Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
Run Code Online (Sandbox Code Playgroud)

我设置了一个快速测试:

  • 在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);
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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

这是我所期待的.

  • 自从你回答以来,我已多次使用过这个版本,希望我可以为每次使用投票. (2认同)