MVC3 Странная ошибка после включения компиляции представлений
В настоящее время я работаю над проектом MVC3 с Razor.
У меня есть switchen при компиляции Views, чтобы быть в курсе орфографических ошибок и т.д. Во время компиляции.
Как только я включаю <MvcBuildViews> true </MvcBuildViews> в файле конфигурации проектов получите во время компиляции следующую ошибку:
Ошибка 1 Ошибка использования раздела, зарегистрированного как allowDefinition = 'MachineToApplication', превышающего уровень приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.
Я прочитал несколько возможных решений проблемы, в основном касающиеся IIS и виртуальных каталогов или приложений.
Проблема в том, что я не использую IIS, а вместо этого использую сервер Visual Studio Development по умолчанию.
Что я могу сделать для решения этой проблемы?
Ответы
Ответ 1
Я попробовал множество различных решений, доступных в Интернете, но либо они не совсем соответствовали моей проблеме, либо они не работали.
Чтобы повторить мою проблему:
После включения CompileViews я сразу получил ошибку при компиляции.
Я использую по умолчанию Visual Studio Development Server VS2010 для тестирования моего приложения MVC.
Сегодня я открыл запрос в поддержку Microsoft Developer, и - мне почти стыдно признаться в этом, - получил мой ответ примерно за 30 секунд в обратном вызове от техника:
Все, что он сказал, это: перейдите в свою папку obj и удалите все содержимое. Затем снова скомпилируйте.
И это действительно все, что нужно.
Итак, после того, как я много думал о себе, я хотел поделиться с вами результатами.
Ответ 2
Эта проблема возникает, когда в папке obj есть выход веб-проекта (templated web.config или временные файлы публикации). Используемый компилятор ASP.NET недостаточно умен, чтобы игнорировать материал в папке obj, поэтому вместо этого он генерирует ошибки.
Другое исправление заключается в том, чтобы nuke вывести публикацию прямо перед вызовом <AspNetCompiler> . Откройте ваш .csproj и измените это:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<ItemGroup>
<ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" />
<ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories("$(BaseIntermediateOutputPath)", "PackageTmp", System.IO.SearchOption.AllDirectories))" />
</ItemGroup>
<Delete Files="@(ExtraWebConfigs)" />
<RemoveDir Directories="@(ExtraPackageTmp)" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Это удалит все web.configs в \obj, а также все папки PackageTmp в\obj.