我的项目结构如下:
MVC4 Web项目的默认输出目录是.\Bin\
(即在Web项目的目录中),但我将其更改为..\bin\debug\
或..\bin\release\
以适合我的上述项目结构体。它编译得很好,二进制文件会到达正确的位置。
但是当我运行该项目时,它会抱怨Could not load type Myproject.MvcApplication
,而如果我没有做出上述更改,那么它就可以了。
如何控制二进制文件的位置?我希望输出目录与源目录完全分开 - 它更容易部署,更安全,因为我没有混合使用源和二进制文件在一个地方。
答案 0 :(得分:11)
简短的回答,你不能。它与Visual Studio甚至.NET无关,它是IIS的限制。
原因是IIS希望bin目录直接位于网站文件夹位置下。这是一种您无法绕过的安全机制。其目的是防止受到破坏的网站直接“逃离”网站根目录的边界。
为什么你甚至想要这样做?
答案 1 :(得分:2)
我也遇到了这个问题,考虑到调试和发布二进制文件的分离是标准做法,并且MVC有一个输出文件夹设置让人很有吸引力,这是出乎意料和混乱的。可以这样做,请参阅here,但它有点难看。
似乎在坚持IIS的期望与保持调试和发布分离和明确标记的需要之间存在冲突。我认为目前的解决方案并不能很好地满足两者的需要。调试和发布是构建时间考虑因素,坚持IIS是包/部署时间,两者已经变得混乱。