由于obj文件夹中的web.config,MVC3项目构建失败

Chr*_*sic 15 deployment visual-studio-2010 asp.net-mvc-3

<MvcBuildViews>true</MvcBuildViews>在我的项目文件中进行了设置.

现在当我第一次部署文件时进行部署obj\release\package\packagetmp.之后的每个后续构建都会导致faild构建.

Web -> C:\Projects\ProjectX\Web\bin\ProjectX.Web.dll
C:\Projects\ProjectX\Web\obj\release\package\packagetmp\web.config(64): 
error ASPCONFIG: It is an error to use a section registered as 
allowDefinition='MachineToApplication' beyond application level.  
This error can be caused by a virtual directory not being configured as an 
application in IIS.
------ Skipped Publish: Project Web, Configuration: Release Any CPU ------
Run Code Online (Sandbox Code Playgroud)

现在如果删除obj文件夹,我可以建立好.

在我发布之后,任何构建都失败,直到我手动删除obj文件夹,这是相当令人沮丧的.有什么办法可以解决这个问题吗?

ken*_*eiv 12

将其添加到.csproj文件中:

<Target Name="AfterBuild" Condition="'$(Configuration)'=='Release'">
  <RemoveDir Directories="$(IntermediateOutputPath)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

似乎删除obj\Release中的文件,但不删除文件夹本身,至少在我的机器上.


can*_*ews 5

出现此问题的原因是MvcBuildViews与Web Deploy打包冲突.我从http://www.zvolkov.com/clog/2011/02/16/asp-net-razor-lessons-learned/了解了这个解决方案:

  <PropertyGroup>
    <PackageDependsOn Condition="'$(DeployOnBuild)'=='true'">
      CleanWebsitesPackage;
      CleanWebsitesPackageTempDir;
      CleanWebsitesTransformParametersFiles;
      MvcBuildViews;
      $(PackageDependsOn)
    </PackageDependsOn>
    <BuildDependsOn Condition="'$(DeployOnBuild)'!='true'">
      $(BuildDependsOn);
      MvcBuildViews
    </BuildDependsOn>
  </PropertyGroup>

  <Target Name="MvcBuildViews" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

现在AspNetCompiler将在打包之前运行.这适用于msbuild/p:DeployOnBuild = True/p:DeployTarget = Package方法.

  • candrews的答案是针对VS 2010而且效果非常出色.对于VS2012,请使用:`<PropertyGroup> <PackageDependsOn Condition ="'$(DeployOnBuild)'=='true'"> CleanWebsitesPackage; CleanWebsitesWPPAllFilesInSingleFolder; CleanWebPublishPipelineIntermediateOutput; MvcBuildViews; $(PackageDependsOn)</ PackageDependsOn> <BuildDependsOn Condition ="'$(DeployOnBuild)'!='true'"> $(BuildDependsOn); MvcBuildViews </ BuildDependsOn> </ PropertyGroup>` (4认同)