Почему я случайно получаю "ошибку, чтобы использовать раздел, зарегистрированный как allowDefinition =" MachineToApplication ", при создании проекта MVC?
Я видел несколько вопросов о SO о подобной ошибке при развертывании веб-сайта, но я, похоже, случайно получил эту ошибку, когда building веб-сайт ASP.NET MVC в Visual Studio. Выполнение чистой обычно исправляет ее, но есть ли способ избежать этого полностью?
Ошибка использования раздела, зарегистрированного как allowDefinition = 'MachineToApplication', превышающего уровень приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS. d:...\OBJ\Debug\пакет\packagetmp\web.config
Обратите внимание, что он жалуется на root web.config
, а не на подкаталог Views
.
Ответы
Ответ 1
Я предполагаю, что вы используете функцию публикации. Я получаю эту ошибку при использовании публикации в каталоге файлов.
Публикация вашего приложения создает временную копию вашего приложения в каталоге \obj\debug\package\packagetmp\web.config
.
Этот web.config путает среду IDE, которая думает, что это приложение, но не в виртуальном каталоге, поэтому вы получаете ошибку.
Обход проблемы:
Это простой способ обхода этой команды:
del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config"
Ошибочные обходные пути:
-
Изменение каталога для "Местоположение, где будет создано пакет" в настройках "Пакет/Публикация в Интернете", похоже, не имеет эффекта - даже если вы умнее и попытаетесь выставить его вне корня проекта с помощью......
-
Создание фактического виртуального каталога в IIS для 'PackageTmp' также не исправило его!
СОЕДИНЯЙТЕ ВОПРОС:
http://connect.microsoft.com/VisualStudio/feedback/details/503254/web-config-in-package-folder-makes-it-impossible-to-compile-debug
Я надеюсь, что они исправят это в RC!
Ответ 2
Мне не удалось заставить другое обходное решение работать, но для меня было создано следующее предзаготовительное событие:
rmdir /s /q "$(ProjectDir)obj\Debug\Package"
rmdir /s /q "$(ProjectDir)obj\Debug\TransformWebConfig"
rmdir /s /q "$(ProjectDir)obj\Release\Package"
rmdir /s /q "$(ProjectDir)obj\Release\TransformWebConfig"
Ответ 3
I ответил на подобный вопрос в последнее время, и похоже, что это может быть связано.
Подводя итог, я столкнулся с этим в одном из наших проектов MVC, и это связано с тем, что свойство MvcBuildViews
в файле проекта установлено на true
. Установка свойства в false
устраняет проблему.
<MvcBuildViews>false</MvcBuildViews>
Я также нашел этот ответ, в котором описывается альтернатива, которая не требует отключения структуры просмотра.
Ответ 4
Вы можете безопасно поместить эту целевую сборку в конец вашего .csproj файла и оставить MvcBuildViews
до true
.
Удаляет папку obj перед запуском сборки...
<Target Name="BeforeBuild">
<!-- Remove obj folder -->
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>