我正在构建一个MVC 3项目,需要在控制器中通过路径引用位于项目的\bin\
文件夹中的程序集。
请问有人可以指点一下如何构建与\bin\
文件夹相关的相对路径吗?
在VS 2010的调试模式下运行该项目会导致当前目录为C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0
,因此使用.\bin\
会在该路径中查找bin
文件夹。
谢谢。
我正在构建一个MVC 3项目,需要在控制器中通过路径引用位于项目的\bin\
文件夹中的程序集。
请问有人可以指点一下如何构建与\bin\
文件夹相关的相对路径吗?
在VS 2010的调试模式下运行该项目会导致当前目录为C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0
,因此使用.\bin\
会在该路径中查找bin
文件夹。
谢谢。
您可以使用当前应用程序域来获取此信息。
// 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");
由于您位于控制器中,因此可以访问HttpServerUtilityBase的实例,它公开了一个MapPath方法:
var binDirectoryPath = Server.MapPath("~/bin");
这样做的额外好处是可以轻松进行单元测试,因为 MapPath 方法是虚拟的并且可以被模拟。