Дивно, що відповіді на 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-deleteing-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 файлі. Не потрібно додавати новий елемент, якщо ви не введете певний тип збірки, наприклад, випуск або налагодження.
АЛЕ ЗАЧЕКАЙТЕ !!!
Якщо ви видаляєте файли з вашого цільового / цільового сервера з наступним параметром у вашій конфігурації публікації:
Потім процес Web Publish видалить на вашому вихідному / цільовому сервері все виключене, наприклад елемент, який ви окреслили у вашому <ExcludeFoldersFromDeployment>
і <ExcludeFilesFromDeployment>
!
Правила пропуску MsDeploy на допомогу:
По-перше, веб-публікація використовує щось інше, ніж 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>
І, будь ласка, не забудьте уникнути .
правила пропуску у файлі path шляхом зворотної скісної риски.