Thật ngạc nhiên, câu trả lời cho Visual Studio 2012 không có ở đây:
Câu trả lời với dấu kiểm màu xanh lá cây không phải là câu trả lời.
Câu trả lời "nâng cao" cao nhất đề cập đến một bài báo từ năm 2010 và cho biết bạn phải chỉnh sửa tệp dự án csproj của mình, tệp này hiện không chính xác. Tôi đã thêm phần tử XML ExcludeFoldersFromDeployment vào tệp csproj Visual Studio 2012 của mình và nó không làm gì cả, phần tử được coi là không hợp lệ, điều này là do ExcludeFoldersFromDeployment đã được chuyển sang tệp .pubxml.
Đối với Ứng dụng Web và Trang web, bạn chỉnh sửa tệp .pubxml!
Bạn có thể làm theo câu trả lời của tôi hoặc thử hướng dẫn này mà tôi tìm thấy sau:
http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-osystem- on-iis-and-via-delete-it-with-msdeployskiprules.html # sthash.MSsQD8U1.dpbs
Có, bạn có thể làm điều này không chỉ cho các Dự án Trang web mà còn cho các Trang web. Tôi đã dành một thời gian dài trên internet để tìm kiếm khả năng loại trừ khó nắm bắt này với Trang web Visual Studio (KHÔNG phải dự án Trang web) và trước đó đã kết luận là không thể nhưng có vẻ như nó là:
Trong tệp .pubxml [mypublishwebsitename] của bạn, được tìm thấy trong ~ / Properties / PublishProfiles for Web Application Projects và ~ / App_Data / PublishProfiles for Websites, chỉ cần thêm:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
là <PropertyGroup>
phần tử chính trong tệp .pubxml của bạn. Không cần thêm phần tử mới trừ khi bạn đang quan tâm đến một loại bản dựng cụ thể, chẳng hạn như bản phát hành hoặc gỡ lỗi.
NHƯNG CHỜ !!!
Nếu bạn đang xóa tệp khỏi máy chủ đích / đích bằng cài đặt sau trong cấu hình Xuất bản của mình:
Sau đó, quy trình Xuất bản trên web sẽ xóa trên máy chủ nguồn / máy chủ đích của bạn bất kỳ thứ gì bị loại trừ, chẳng hạn như một mục bạn đã phân định trong <ExcludeFoldersFromDeployment>
và <ExcludeFilesFromDeployment>
!
MsDeploy Bỏ qua các quy tắc để giải cứu:
Đầu tiên, Web Publish sử dụng thứ gì đó khác ngoài MSBuild để xuất bản (được gọi là Task IO hoặc thứ gì đó tương tự) nhưng nó có một lỗi và sẽ không nhận ra các quy tắc bỏ qua, vì vậy bạn phải thêm vào .pubxml của mình:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
Tôi sẽ giữ <WebPublishMethod>
riêng nó <PropertyGroup>
, bạn sẽ nghĩ rằng bạn có thể chỉ có một <PropertyGroup>
phần tử trong .pubxml của mình nhưng Quy tắc bỏ qua của tôi không được gọi cho đến khi tôi chuyển <WebPublishMethod>
sang <PropertyGroup>
phần tử của chính nó . Đúng vậy, thật điên rồ, nhưng thực tế là bạn cần làm tất cả những điều này để Web Publish loại trừ và cũng không xóa thư mục / tệp trên máy chủ của bạn là một điều điên rồ.
Bây giờ các khai báo SkipRules, ExcludeFolders và ExcludeFiles thực tế của tôi trong .pubxml:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
Và bây giờ là Quy tắc bỏ qua ( <Target>
là con <Project>
trong .pubxml của bạn): ( Bạn có thể để <SkipAction>
trống cho Bỏ qua cho tất cả các hành động nhưng tôi đã không kiểm tra điều đó và không chắc chắn.
<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>
Và xin đừng quên thoát .
quy tắc Bỏ qua trong filePath bằng dấu gạch chéo ngược.