Сбой сборки проекта MVC3 из-за web.config в папке obj - PullRequest
15 голосов
/ 12 сентября 2011

У меня есть <MvcBuildViews>true</MvcBuildViews> в моих файлах проекта.

Теперь, когда я делаю развертывание в первый раз, я получаю файлы в obj\release\package\packagetmp. Каждая последующая сборка после этого приводит к неудачной сборке.

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 ------

Теперь, если удалить папку obj, я могу нормально построить.

Это довольно печально, если после публикации я не могу выполнить сборку, пока я не удалил папку obj вручную. Что я могу сделать, чтобы это исправить?

Ответы [ 3 ]

12 голосов
/ 14 сентября 2011

Добавьте это в файл .csproj:

<Target Name="AfterBuild" Condition="'$(Configuration)'=='Release'">
  <RemoveDir Directories="$(IntermediateOutputPath)" />
</Target>

Кажется, что файлы удаляются в obj \ Release, но не в самой папке, по крайней мере, на моем компьютере.

5 голосов
/ 12 апреля 2012

Эта проблема возникает из-за конфликта 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>

Теперь AspNetCompiler будет работать до упаковки.Это прекрасно работает с msbuild / p: DeployOnBuild = True / p: DeployTarget = Пакетный подход.

1 голос
/ 12 сентября 2011

Это известная проблема с MVC, когда вы включаете функцию построения представлений MVC.Надеюсь, они исправят это в следующей версии.

Тем временем вы можете запустить операцию «Очистить решение», чтобы очистить папку obj вместо того, чтобы делать это вручную.Недостатком является то, что все ваше решение будет перестраиваться каждый раз.

Еще один вариант, который я еще не сделал, но рассмотрел, станет ли мой проект больше, - это этап предварительной компиляции в проекте MVC для удаления.web.config от obj \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...