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

Posted

技术标签:

【中文标题】Visual Studio 的“发布”功能阻止我的 ASP.NET MVC 应用程序编译【英文标题】:Visual Studio's "Publish" feature prevents my ASP.NET MVC app from compiling 【发布时间】: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 文件夹,它又可以工作了 【参考方案1】:

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

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

【讨论】:

你说得对,我打开了MvcBuildViews,现在我想起来了,那就是错误开始发生的时候。我尝试将BaseIntermediateOutputPath 设置为我的解决方案文件夹的上一级,这完全解决了问题。感谢您的帮助。

以上是关于Visual Studio 的“发布”功能阻止我的 ASP.NET MVC 应用程序编译的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止Visual Studio向我的web.config添加程序集?

开始调试时阻止 Visual Studio 启动新的浏览器窗口?

阻止 Visual Studio 尝试为特定 DLL 加载符号

在 Visual Studio 2015 中阻止资源文件的语言翻译

为啥 Visual Studio 阻止我看到 .csproj 文件,有没有办法强制打开它?

阻止 Visual Studio 将 using 指令放在命名空间之外