आश्चर्यजनक रूप से विजुअल स्टूडियो 2012 का उत्तर यहां नहीं है:
ग्रीन चेकमार्क वाला उत्तर इसका उत्तर नहीं है।
उच्चतम "यूप्ड" उत्तर 2010 के एक लेख का संदर्भ देता है और कहता है कि आपको अपनी csproj परियोजना फ़ाइल को संपादित करना होगा जो अब गलत है। मैंने अपने Visual Studio 2012 csproj फ़ाइल में ExcludeFoldersFromDeployment XML तत्व को जोड़ा और उसने कुछ भी नहीं किया, तत्व को अमान्य माना गया, ऐसा इसलिए है क्योंकि ExcludeFoldersFromDeployment को .pubxml फ़ाइल में ले जाया गया है, जैसा दिखता है।
वेब एप्लिकेशन और वेबसाइट के लिए आप .pubxml फ़ाइल को संपादित करते हैं!
आप मेरे उत्तर का अनुसरण कर सकते हैं या इस गाइड को आज़मा सकते हैं, जो मुझे बाद में मिला:
http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- पर iis-
जी हाँ, आप ऐसा सिर्फ Website Projects के लिए ही नहीं बल्कि Websites के लिए भी कर सकते हैं। मैं एक दृश्य स्टूडियो वेबसाइट (नहीं वेबसाइट परियोजना) के साथ इस मायावी अपवर्जित क्षमता की तलाश में इंटरनेट पर एक लंबा समय बिताया था और पहले निष्कर्ष निकाला था कि यह संभव नहीं था, लेकिन ऐसा लगता है:
अपने [mypublishwebsitename] .pubxml फ़ाइल में, वेब एप्लिकेशन प्रोजेक्ट्स के लिए ~ / Properties / PublishProfiles और वेबसाइटों के लिए ~ / App_Data / PublishProfiles में, बस जोड़ें:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
<PropertyGroup>
आपके .pubxml फ़ाइल में मुख्य तत्व के रूप में बच्चे । जब तक आप एक विशिष्ट बिल्ड प्रकार की कुंजी नहीं लगाते हैं, तब तक एक नया तत्व जोड़ने की आवश्यकता नहीं है, जैसे रिलीज़ या डिबग।
लेकिन रुकें!!!
यदि आप अपने प्रकाशन में निम्न सेटिंग के साथ अपने गंतव्य / लक्ष्य सर्वर से फ़ाइलें निकाल रहे हैं:
फिर वेब पब्लिश प्रक्रिया आपके स्रोत / लक्ष्य सर्वर पर किसी भी चीज को हटा देगी, जैसे आपके <ExcludeFoldersFromDeployment>
और आपके द्वारा डिलीट की गई वस्तु <ExcludeFilesFromDeployment>
!
MsDeploy बचाव के लिए नियम छोड़ें:
सबसे पहले, वेब पब्लिश करने के लिए MSBuild (टास्क IO या ऐसा कुछ कहा जाता है) के अलावा कुछ और का उपयोग करता है, लेकिन इसमें बग है और स्किप नियमों को मान्यता नहीं देगा, इसलिए आपको अपने .pubxml में जोड़ना होगा:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
मैं <WebPublishMethod>
अपने <PropertyGroup>
आप <PropertyGroup>
में रखूंगा , आपको लगता है कि आप अपने .pubxml में सिर्फ एक तत्व रख सकते हैं लेकिन जब तक मैं <WebPublishMethod>
अपने <PropertyGroup>
तत्व में नहीं जाता तब तक मेरे स्किप नियम नहीं कहे जा रहे थे । हां, पागल, लेकिन इस तथ्य को वेब पब्लिश करने के लिए आपको यह सब करने की जरूरत है और अपने सर्वर पर एक फ़ोल्डर / फ़ाइल को भी नहीं हटाना है।
अब मेरे वास्तविक स्किपरुल्स, एक्सक्लूडफोल्डर्स और एक्सक्लूजफाइल घोषणाएं मेरे .pubxml में:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
और अब छोड़ें नियम ( आपके .pubxml में <Target>
एक बच्चा है <Project>
): ( आप <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>
और कृपया, .
एक फ़ाइलपैथ से बचने के लिए मत भूलना बैकस्लैश के साथ नियम छोड़ें।