我可以使用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");
?