2015-09-22 2 views
1

У меня есть проект веб-сайта, который развертывается с использованием функции «Опубликовать веб-сайт» в Visual Studio. Я понимаю, что эта функция использует WebDeploy (MSDeploy), которая вызывает MSBuild для компиляции сайта.Игнорировать каталог в MSDeploy и MSBuild

Внутри веб-сайта есть каталог, который должен быть проигнорирован как WebDeploy, так и MSBuild, поскольку он разбивает сайт.

Я был в состоянии настроить файл конфигурации развертывания (.pubxml), чтобы WebDeploy игнорировать каталог:

<PropertyGroup> 
    ... 
    <ExcludeFoldersFromDeployment>node_modules</ExcludeFoldersFromDeployment> 
    </PropertyGroup> 

Я также был в состоянии получить сайт, чтобы скомпилировать, сделав каталог, скрытый в файловой системе.

Однако, я не могу заставить MSBuild игнорировать каталог при вызове из WebDeploy.

Как игнорировать каталог в любое время, когда сайт скомпилирован?

Update

Бревно компиляторов это в окне вывода, когда он терпит неудачу:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.WebSite.Publishing.targets(172,5): Error MSB4018: The "CollectFilesinFolder" task failed unexpectedly. 
+0

Что вы подразумеваете под «при вызове из WebDeplay»? Вы имеете в виду msdeploy.exe? –

+0

Я нажимаю «Публиковать веб-сайт» в обозревателе решений, он запускает диалоговое окно публикации. Когда я нажимаю публикацию, он вызывает MSDeploy, который вызывает MSBuild. –

+0

Gotcha. Для записи это на самом деле наоборот: MSBuild вызывает MSDeploy - MSDeploy не имеет зависимости от MSBuild. –

ответ

0

Вы хотите применить правило пропуска, так что каталог игнорируются процесс синхронизации полностью.

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

<ItemGroup> 
    <MsDeploySkipRules Include="SkipNodeModules"> 
    <AbsolutePath>node_modules</AbsolutePath> 
    </MsDeploySkipRules> 
</ItemGroup> 

Если вы столкнетесь с проблемами он не работает, вы можете видеть this problem. Если да, просто добавьте:

+0

Он по-прежнему не работает при компиляции MSBuild. Подкаталоги в node_modules слишком долго меняют имя пути и ломаются. –

+0

@BillHeitstuman - Исключить node_modules из вашего проекта (они все равно будут существовать в файловой системе) –