Visual Studio的"发布"功能阻止我的ASP.NET MVC应用程序编译

dev*_*xer 4 asp.net asp.net-mvc publish web-config visual-studio

当我在Visual Studio中发布我的ASP.NET MVC应用程序时,我注意到一个奇怪的问题:

发布后,它将无法编译.我收到此错误:

在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.

从目前为止的研究来看,当包含某些部分的Web.config文件比项目文件夹层次结构中的root更深时,通常会发生此错误.

好吧,事实证明我在层次结构中有更深层次的Web.config文件,我在这些文件夹中找到了这些文件:

  • [项目文件夹]\obj\Release\Package\PackageTmp
  • [项目文件夹]\obj\Release\TransformWebConfig\original
  • [项目文件夹]\obj\Release\TransformWebConfig\transformed

问题是,我没有将这些文件放在这些位置.它们在发布过程中被复制(特别是FTP发布).如果我手动删除Web.configs(或重建我的解决方案),我再次能够编译.(好吧,重建通常有效 - 如果我在发布后从Debug切换到Release,反之亦然,它将失败.)

现在,我的问题:

我搞砸了一个设置或做错了什么,或者这基本上只是我必须处理的麻烦?我应该担心吗?这个问题可以解决吗?

Ale*_*bin 5

您是否<MvcBuildViews>true</MvcBuildViews>在您的Web项目.csproj文件中使用?如果是的话,那可能就是问题所在.把它弄错,问题就消失了.

如果您真的想使用MvcBuildViews功能,另一种解决方案如下所述:link.我没有测试它,但似乎有很好的评论!