Пишем код

Заметки о .net разработке

Проблема one-click publish и MvcBuildViews в asp.net MVC

with one comment

При использовании one-click publish я как-то раз столкнулся с подобной ошибкой:

It is an error to use 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.

Происходит она при попытке компиляции проекта после первого же паблиша (на удаленный сервер или даже в локальную папку).
Столкнувшись сегодня с ней во второй раз и осознав, что я не помню, «что это было» и как это лечится, решил написать заметку.

Корень проблемы в том, что по-умолчанию публикация происходит в папку obj/Debug(Release) внутри mvc-проекта. В результате публикации, в этих папках появляются файлы web.config.
Если при этом проект настроен на компиляцию вьюшек (MvcBuildViews = true), то при запуске этой самой компиляции msbuild пытается воспроизвести вокруг вьюшек iis-окружение, а этому мешают неожиданные web.config’и во вложенных папках (msbuild’у кажется, что в папке obj/Debug у нас вложенный сайт, а как отдельное приложение он эта папка не сконфигурирована). Об этом собственно и говорит сообщение об ошибке, но очень уж завуалированно :)

Первое очевидное решение — это очистка папки obj/Debug(/Release) перед сборкой (например, через Clean Solution), но постоянно повторять эти действия слегка надоедает :)
Альтернативное и более «чистое» решение — смена папки публикации, чтобы она не находилась внутри MVC-проекта. Сделать это можно добавив в .csproj файл следующую строчку:

<MvcBuildViews>true</MvcBuildViews> <!-- эта строчка у вас скорее всего уже есть, иначе проблемы бы не было :)) -->
<BaseIntermediateOutputPath>../build</BaseIntermediateOutputPath>

Промежуточная публикация при этом будет происходить в папку build на уровень выше вашего проекта, что не помешает дальнейшим компиляциям вьюшек.
(при этом удалить содержимое папки obj/Debug/Release один раз таки-придется руками :))

Опубликовать в Facebook
Опубликовать в Google Plus

Written by Shaddix

Апрель 17th, 2012 at 6:59 пп

One Response to 'Проблема one-click publish и MvcBuildViews в asp.net MVC'

Subscribe to comments with RSS or TrackBack to 'Проблема one-click publish и MvcBuildViews в asp.net MVC'.

  1. [b]Пополение баланса Авито (Avito) за 50%[/b] | [b]Телеграмм @a1garant[/b]

    [b]Приветствую вас, дорогие друзья![/b]

    Готовы предоставить Всем вам услуги по пополнению баланса на действующие активные аккаунты Avito (а также, абсолютно новые). Если Вам надо конкретные балансы — пишите, будем решать. Потратить можно на турбо продажи, любые платные услуги Авито (Avito).

    [b]Аккаунты не Брут. Живут долго.[/b]

    Процент пополнения в нашу сторону и стоимость готовых аккаунтов: [b]50% от баланса на аккаунте.[/b]
    Если необходим залив на ваш аккаунт, в этом случае требуются логин и пароль Вашего акка для доступа к форме оплаты, пополнения баланса.
    Для постоянных клиентов гибкая система бонусов и скидок!

    [b]Гарантия: [/b]

    [b]И, конечно же ничто не укрепляет доверие, как — Постоплата!!![/b] Вперед денег не просим…

    Рады сотрудничеству!

    [b]Заливы на балансы Авито[/b]
    ________

    карты деньги два ствола торрент ави
    почему avito просит деньги
    как восстановить аккаунт на авито по номеру телефона не помню почту
    авито перевел деньги на карту сбербанка
    помогу разблокировать аккаунт на авито

    AvitoRu1pl

    7 Дек 17 at 07:00

Leave a Reply