如果不使用标准输出目录,则无法运行MVC4项目

时间:2012-10-02 06:16:58

标签: asp.net-mvc asp.net-mvc-4

我的项目结构如下:

  • SRC
    - 班级图书馆1 - 班级图书馆2 - 网络项目

  • - 调试
    - 发布

MVC4 Web项目的默认输出目录是.\Bin\(即在Web项目的目录中),但我将其更改为..\bin\debug\..\bin\release\以适合我的上述项目结构体。它编译得很好,二进制文件会到达正确的位置。

但是当我运行该项目时,它会抱怨Could not load type Myproject.MvcApplication,而如果我没有做出上述更改,那么它就可以了。

如何控制二进制文件的位置?我希望输出目录与源目录完全分开 - 它更容易部署,更安全,因为我没有混合使用源和二进制文件在一个地方。

2 个答案:

答案 0 :(得分:11)

简短的回答,你不能。它与Visual Studio甚至.NET无关,它是IIS的限制。

原因是IIS希望bin目录直接位于网站文件夹位置下。这是一种您无法绕过的安全机制。其目的是防止受到破坏的网站直接“逃离”网站根目录的边界。

为什么你甚至想要这样做?

答案 1 :(得分:2)

我也遇到了这个问题,考虑到调试和发布二进制文件的分离是标准做法,并且MVC有一个输出文件夹设置让人很有吸引力,这是出乎意料和混乱的。可以这样做,请参阅here,但它有点难看。

似乎在坚持IIS的期望与保持调试和发布分离和明确标记的需要之间存在冲突。我认为目前的解决方案并不能很好地满足两者的需要。调试和发布是构建时间考虑因素,坚持IIS是包/部署时间,两者已经变得混乱。