【问题标题】:Visual Studio's "Publish" feature prevents my ASP.NET MVC app from compilingVisual Studio 的“发布”功能阻止我的 ASP.NET MVC 应用程序编译
【发布时间】:2011-09-16 23:55:19
【问题描述】:

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

发布后无法编译。我收到此错误:

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

根据我目前的研究,当包含某些部分的 Web.config 文件比项目文件夹层次结构中的根目录更深时,通常会发生此错误。

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

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

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

现在,我的问题:

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

【问题讨论】:

  • 每次部署后都会发生同样的情况,我只是删除了 obj 文件夹,它又可以工作了

标签: asp.net asp.net-mvc visual-studio web-config publish


【解决方案1】:

您是否在 Web 项目的 .csproj 文件中使用 <MvcBuildViews>true</MvcBuildViews>?如果是,则可能是问题所在。把它设置为false,问题就消失了。

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

【讨论】:

  • 你说得对,我打开了MvcBuildViews,现在我想起来了,那就是错误开始发生的时候。我尝试将BaseIntermediateOutputPath 设置为我的解决方案文件夹的上一级,这完全解决了问题。感谢您的帮助。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 2016-05-22
  • 2018-08-11
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多