allowDefinition = 'MachineToApplication' ошибка msbuild - PullRequest
44 голосов
/ 11 марта 2011

У нас есть ASP.NET MVC с 4-5 различными конфигурациями сборки.Всякий раз, когда мы изменяем конфигурацию сборки, нам нужно удалить папку obj для веб-проекта, так как мы получаем ошибку 'allowDefinition =' MachineToApplication '.Больно, но мы справились, удалив папку в событиях до / после сборки.Теперь мне нужно настроить наш CI для создания пакетов развертывания.Это означает, что я не могу удалить папку obj.Каждый раз, когда я компилирую, например, со следующими параметрами msbuild

/ p: CreatePackageOnPublish = true / p: DeployOnBuild = true

Я получаю сообщение об ошибке:

web.config (123): ошибка ASPCONFIG: Ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication' за пределами уровня приложения.Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.

Насколько я понимаю, проблема в том, что в проекте несколько файлов .config - в нашем случае,нет.Я мог бы действительно использовать некоторую помощь, чтобы найти объяснение и найти постоянное (не взломанное) исправление.

Редактировать: Этот вопрос помечен как дубликат, но соответствующие ответы и причины (ы) в 2 потоках, явно отличаются друг от друга.Не уверен, что подразумевается под этим тегом - я прочитал этот конкретный пост перед публикацией этого вопроса, поскольку он не ответил на мой вопрос.Есть несколько причин для этого сообщения об ошибке.Это «похоже», но определенно не дубликат!

Ответы [ 12 ]

0 голосов
/ 01 августа 2012

совет 1: очистить и затем восстановить.

совет 2: просто закройте VS и снова откройте.

совет 3: загруженный проект может находиться в другой подпапке ... открытьпапка, в которой хранятся ваши файлы .net.

c: / demo1 / demo / (все файлы)

Вы должны открыть демо из vs ... не из demo1.

0 голосов
/ 18 июля 2012

Это не обязательно та же самая проблема, и, честно говоря, вероятно, из-за чистого недостатка знаний с моей стороны, однако у меня была такая же ошибка, когда:

  1. Я установил стандартный новый проект asp.net, фактически используемый только для HTML5, так что ничего, кроме обычной структуры проекта
  2. Затем я (не думая, возможно!) Добавил новый проект WCF REST (который на самом деле был просто еще одним базовым проектом asp.net, используя очень хорошие примеры из http://www.codeproject.com/Articles/128478/Consuming-WCF-REST-Services-Using-jQuery-AJAX-Call?fid=1597004&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick&fr=26#xx0xx и http://geekswithblogs.net/michelotti/archive/2010/08/21/restful-wcf-services-with-no-svc-file-and-no-config.aspx

Проблема была в том, что я добавил проект WCF REST (# 2) в качестве ПОДРАЗДЕЛЕНИЯ основного проекта (# 1), а затем попытался создать его! конечно, даже если я очистил проект .. Я также заставил оба проекта использовать IISexpress, потому что я думал, что существует проблема с использованием того же порта или чего-то еще.

Конечно, процесс сборки увидел web.config из # 1, а затем подкаталог с другим web.config # 2 ..

Я понимаю, что это, вероятно, должно быть очень просто понято понял , и это застало меня некоторое время назад, однако иногда это самые простые ошибки, которые вызывают настоящую боль!

Может помочь другим ... кто, возможно, не пил утренний кофе ..

...