Удивительно, но ответа для Visual Studio 2012 здесь нет:
Ответ с зеленой галочкой не является ответом.
Самый высокий «повышенный» ответ ссылается на статью 2010 года, в которой говорится, что вам нужно отредактировать файл проекта csproj, который теперь неверен. Я добавил XML-элемент ExcludeFoldersFromDeployment в свой файл csproj Visual Studio 2012, и он ничего не сделал, элемент считался недопустимым, потому что ExcludeFoldersFromDeployment был перемещен в файл .pubxml, как он выглядит.
Для веб-приложений и веб-сайтов вы редактируете файл .pubxml!
Вы можете следовать моему ответу или попробовать это руководство, которое я нашел позже:
http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- on-iis-and-skip-deleting-it-with-msdeployskiprules.html # sthash.MSsQD8U1.dpbs
Да, вы можете сделать это не только для веб-проектов, но и для веб-сайтов. Я провел много времени в Интернете в поисках этой неуловимой возможности исключения с помощью веб-сайта Visual Studio (НЕ проекта веб-сайта) и ранее пришел к выводу, что это невозможно, но похоже, что это так:
В файле [mypublishwebsitename] .pubxml, который находится в ~ / Properties / PublishProfiles для проектов веб-приложений и ~ / App_Data / PublishProfiles для веб-сайтов, просто добавьте:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
как дети к главному <PropertyGroup>
элементу в вашем .pubxml файле. Нет необходимости добавлять новый элемент, если только вы не используете определенный тип сборки, например выпуск или отладку.
НО ЖДАТЬ!!!
Если вы удаляете файлы с целевого / целевого сервера со следующими настройками в конфигурации публикации:
Затем процесс веб-публикации удалит на вашем исходном / целевом сервере все исключенное, например, элемент, который вы обозначили в своих <ExcludeFoldersFromDeployment>
и<ExcludeFilesFromDeployment>
!
Правила пропуска MsDeploy спешат на помощь:
Во-первых, Web Publish для публикации использует что-то другое, кроме MSBuild (так называемый Task IO или что-то в этом роде), но в нем есть ошибка и он не распознает правила пропуска, поэтому вы должны добавить в свой .pubxml:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
Я бы оставил <WebPublishMethod>
свой собственный <PropertyGroup>
, вы могли бы подумать, что у вас может быть только один <PropertyGroup>
элемент в вашем .pubxml, но мои правила пропуска не вызывались, пока я не перешел <WebPublishMethod>
к его собственному <PropertyGroup>
элементу. Да, безумие, но тот факт, что вам нужно сделать все это для Web Publish, чтобы исключить, а также не удалить папку / файл на вашем сервере, безумие.
Теперь мои фактические объявления SkipRules, ExcludeFolders и ExcludeFiles в моем .pubxml:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
А теперь правила пропуска ( <Target>
являются дочерними для <Project>
вашего .pubxml): ( Вы можете оставить <SkipAction>
пустым, чтобы пропустить все действия, но я не проверял это и не уверен.
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipConfigFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Config</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipPhotosFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Photos</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipWebConfig">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Web\.config</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipWebConfig">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Temp</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
И, пожалуйста, не забудьте экранировать .
правило пропуска в filePath с помощью обратной косой черты.