2010-07-08 96 views
1

每当我通过一键发布功能在VS 2010中发布我的MVC Web应用程序(我没有做任何web.config转换或任何幻想 - 但!)。下一次我来构建应用程序时,出现以下错误:从VS 2010发布Web应用程序后的问题

在应用程序级别之外使用注册为allowDefinition ='MachineToApplication' 的段是错误的。此错误可能是由于配置为IIS中的应用程序的虚拟目录不是 。在... MyWebApp \ obj \ release \ package \ packagetmp \ web.config

web.config文件的新副本确实是由VS2010创建的... MyWebApp \ obj \ folder所以我删除了整个OBJ文件夹,然后我能够再次建立。

但我不应该每次发布时都这样做 - 我必须有一些配置不正确 - 任何人都可以帮忙。

谢谢。

回答

0

我刚刚发现这个已经为我工作周围的工作,打开的.csproj为您的Web项目,并更改项目\的PropertyGroup节点下这个节点:

从这个: <MvcBuildViews>真正</MvcBuildViews >

这样: <MvcBuildViews>假</MvcBuildViews >

这对我有效,希望它也能为你工作。

+2

请注意,虽然这确实解决了这个问题,但这意味着您不再需要对视图进行编译时验证 - 对我来说这是一个交易断路器。 – 2010-10-18 10:20:58

1

这不幸是一个将Web应用程序发布到文件系统的已知问题。这仍然影响Visual Studio 2010的发布版本(RTM)。它不仅限于Beta或RC版本。

这个问题“位”我也,我也必须手动删除我的网站解决方案文件夹obj文件夹中的DebugRelease文件夹。

一个自动化的“解决办法”真正的答案可以在this answer可以找到其他堆栈溢出问题:

Why do I randomly get a “error to use section registered as allowDefinition='MachineToApplication'” when building an MVC project?

简而言之,你需要从删除web.config文件要么DebugRelease文件夹(或两者),而这与构建前命令(在Project Properties页你的解决方案的Build Events选项卡中配置)来实现的:

del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" 
del "$(ProjectDir)\obj\Release\Package\PackageTmp\web.config" 

个人而言,我删除了整个obj文件夹,因为所有这些文件都是用每个版本重新创建的。