2011-08-25 87 views
18

我正在构建一个MVC 3项目,该项目需要在控制器中通过路径引用坐在\bin\项目文件夹中的程序集。MVC 3 ./bin/的相对路径

任何人都可以指向正确的方向来构建\bin\文件夹的相对路径吗?

在VS 2010中以调试模式运行项目会导致当前目录为C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0,因此使用.\bin\会在该路径中查找bin文件夹。

谢谢

回答

39

您可以使用当前的appdomain来获取此信息。

// 1) get current directory for this loaded assembly 
// 2) combine path to get \bin folder 
var path = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin"); 
+0

第一次工作!非常感谢。 – AndyBursh

+0

谢谢,救命吧 – Cohen

8

既然你在一个控制器是可以访问的HttpServerUtilityBase一个实例,它公开了一个MapPath方法:

var binDirectoryPath = Server.MapPath("~/bin"); 

这具有平凡的单元测试的好处是,由于在MapPath方法是虚拟的,可以被模拟。