Удивительно, но ответ для Visual Studio 2012 не здесь:
Ответ с зеленой галочкой не является ответом.
Ответ с наивысшим рейтингом содержит статью 2010 года и говорит, что вам нужно отредактировать файл проекта csproj, который сейчас неверен. Я добавил XML-элемент ExcludeFoldersFromDeployment в мой файл Visual Studio 2012 csproj, и он ничего не сделал, элемент считался недействительным, потому что 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. Нет необходимости добавлять новый элемент, если вы не набираете конкретный тип сборки, например, release или debug.
НО ПОДОЖДИТЕ !!!
Если вы удаляете файлы с целевого / целевого сервера со следующими настройками в конфигурации публикации:
Затем процесс веб-публикации удалит на вашем исходном / целевом сервере все исключенное, например, элемент, который вы определили в своих <ExcludeFoldersFromDeployment>
и <ExcludeFilesFromDeployment>
!
MsDeploy Пропустить правила на помощь:
Во-первых, веб-публикация использует для публикации что-то отличное от MSBuild (называемое Task IO или чем-то в этом роде), но в ней есть ошибка, и она не распознает правила пропуска, поэтому вы должны добавить в свой .pubxml:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
Я бы оставил <WebPublishMethod>
в своем собственном <PropertyGroup>
, вы могли бы подумать, что в вашем .pubxml может быть только один <PropertyGroup>
элемент, но мои Правила Пропуска не вызывались, пока я не переместил <WebPublishMethod>
в свой собственный <PropertyGroup>
элемент. Да, безумие, но тот факт, что вам нужно сделать все это, чтобы веб-публикация исключала, а также не удаляла папку / файл на вашем сервере, - это безумие.
Теперь мои настоящие объявления 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>
И, пожалуйста, не забывайте экранировать .
в правиле Пропуск файла с обратной косой чертой.