Thật ngạc nhiên là câu trả lời cho Visual Studio 2012 không phải là ở đây:
Câu trả lời có 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 "được tăng cao nhất" tham chiếu một bài viết từ năm 2010 và cho biết bạn phải chỉnh sửa tệp dự án csproj của bạn hiện không chính xác. Tôi đã thêm phần tử ExcludeFoldersFromDeployment XML vào tệp csproj Visual Studio 2012 của mình và nó không làm gì, 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 các ứng dụng web và trang web bạn chỉnh sửa các tập tin .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-structure-on-iis-and-skip-deleting-it-with-msdeployskiprules.html#sthash.MSsQD8U1.dpbs
Vâng, bạn có thể làm được điều này không chỉ cho các dự án website nhưng trang web quá. 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 một Website Visual Studio (dự án KHÔNG Website) và trước đây đã kết luận nó là không thể nhưng có vẻ như là:
Trong [mypublishwebsitename] .pubxml của bạn tập tin, tìm thấy trong ~/Properties/PublishProfiles cho các dự án ứng dụng Web và ~/App_Data/PublishProfiles cho trang web, chỉ cần thêm:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
như trẻ em đến các yếu tố chính <PropertyGroup>
trong tập tin .pubxml của bạn. Không cần phải thêm một phần tử mới trừ khi bạn đang khóa một kiểu xây dựng cụ thể, như phát hành hoặc gỡ lỗi.
NHƯNG WAIT !!!
Nếu bạn đang loại bỏ các file từ máy chủ đích/mục tiêu của bạn với các thiết lập sau đây trong cấu hình Publish của bạn:
Sau đó, Web Publish quá trình sẽ xóa trên máy chủ bất cứ điều gì nguồn/mục tiêu của bạn bị loại trừ, như một mục bạn đã mô tả trong số <ExcludeFoldersFromDeployment>
và <ExcludeFilesFromDeployment>
!
MsDeploy Rules Skip để giải cứu:
Thứ nhất, Web Xuất bản sử dụng một cái gì đó khác hơn MSBuild xuất bản (gọi tắt là công tác IO hoặc một cái gì đó như thế) nhưng nó có một lỗi và sẽ không nhận ra bỏ quy tắc, vì vậy bạn phải thêm vào .pubxml của bạn:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
tôi sẽ giữ <WebPublishMethod>
trong của nó riêng <PropertyGroup>
, bạn sẽ nghĩ rằng bạn chỉ có thể có một phần tử trong <PropertyGroup>
.pubxml của bạn, nhưng tôi Rules Bỏ qua đã không được gọi cho đến khi tôi chuyển <WebPublishMethod>
thành phần tử <PropertyGroup>
riêng. Có, điên rồ, nhưng thực tế bạn cần phải làm tất cả điều này cho Web Publish để loại trừ và cũng không xóa một thư mục/tập tin trên máy chủ của bạn là điên.
Bây giờ SkipRules thực tế của tôi, ExcludeFolders và tờ khai ExcludeFiles trong .pubxml tôi:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
Và bây giờ là một quy tắc Skip (<Target>
là con của <Project>
trong .pubxml của bạn): (Bạn có thể có thể để lại <SkipAction>
trống để Bỏ qua tất cả những hành động nhưng tôi đã không kiểm tra đó 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 vui lòng, đừng quên để thoát khỏi các .
trong một rulePath Bỏ qua quy tắc với một dấu gạch chéo ngược.
Ở đây bạn có thể tìm thấy một giải pháp rất đơn giản: http://stackoverflow.com/questions/1288858/how-to-exclude-web-config-when-publishing-with-visual-web-developer-express –