SORU
27 Kasım 2010, CUMARTESİ


MSDeploy (Visual Studio) silmek App_Data klasörü sil ama her şeyi yapmak

Visual Studio Publish düğmesi web siteme dağıtmak için, ve farklı App_Data klasörü istiyorum sunucuda kullanıyorum. Silinmiş alıyorum benim App_Data klasörü engeller Leave extra files on destination (do not delete) için bir onay kutusu var, ama sonra sonunda, web sitesi değişiklikleri gibi körelmiş bir sürü dosya birikir.

O her şeyi siler sadece App_Data dışlamak yapmak için herhangi bir yolu var mı?

CEVAP
14 NİSAN 2011, PERŞEMBE


Sen msdeploy el ile çağırmak - aşağıdaki parametreyi ekleyin sadece zaman yapılabilir:

-skip:Directory=\\App_Data

Web Deploy Operation Settings bkz. Yol oldukça esnektir yani normal bir ifade.

Eğer varsa kullanarak dağıtmak VS tarafından oluşturulan Veritabanı.dağıtmak.cmd Komut, aynı zamanda _MsDeployAdditionalFlags ortam değişkeni bu komut çalıştırılırken () Bu parametre iletebilirsiniz.

Bu ihtiyaçlarımızı (senin gibi benzer bir durum var) için geldim en iyisidir. VS komut satırından göreve beri düğmesi Yayımlamak, entegre denemedim.

DÜZENLEME:

Bu cevabı ben yayınlanmıştır beri MSDeploy hakkında bir kaç şey öğrendim, şimdi güncelle dedim.

Her şeyden önce, yukarıda eşleşen yolu (App_Data) kural atlar işlemleri atlayın. Eğer daha iyi bir kontrole ihtiyacı varsa, daha ayrıntılı bir sözdizimi kullanılabilir. Örneğin, sadece siler atlamak için (hedef sunucu üzerinde herhangi bir ek dosyaları tutmak, ancak herhangi bir yenilerini eklemek ve mevcut olanları güncellemek için):

-skip:skipaction='Delete',objectname='filePath',absolutepath='\\App_Data\\.*' -skip:skipaction='Delete',objectname='dirPath',absolutepath='\\App_Data\\.*'

Tüm dosyaları ve tüm alt (tüm içeriği ile) bu atlar siler App_Data, ama ekler ve güncellemeleri engellemez.

Başka yararlı bir şey atlamak kuralları otomatik olarak.deploy.cmd script paketi ile birlikte oluşturulan dahil oldukları proje dosyası (.csproj) olarak tanımlanabilir. Bu gereksiz _MsDeployAdditionalFlags üzerinden senaryoyu aktarmak için yapar.

Atla yukarıdaki kural ise aşağıdaki csproj dosya dahil eklenecektir:

<PropertyGroup>
  <OnBeforePackageUsingManifest>AddCustomSkipRules</OnBeforePackageUsingManifest>
</PropertyGroup>
<Target Name="AddCustomSkipRules">
  <ItemGroup>
    <MsDeploySkipRules Include="SkipDeleteAppData">
      <SkipAction>Delete</SkipAction>
      <ObjectName>filePath</ObjectName>
      <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
      <XPath>
      </XPath>
    </MsDeploySkipRules>
    <MsDeploySkipRules Include="SkipDeleteAppData">
      <SkipAction>Delete</SkipAction>
      <ObjectName>dirPath</ObjectName>
      <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
      <XPath>
      </XPath>
    </MsDeploySkipRules>
  </ItemGroup>
</Target>

(AddCustomSkipRules SkipDeleteAppData tamamen rastgele isimler; $(_Escaped_PackageTempDir) olması gerekiyordumuhtemelengerekli, ama pratikte her zaman boş bir dize değerlendirir) gördüm

Daha fazla bilgi için Web Deploy: Customizing a deployment package How to set MSDeploy settings in .csproj file bkz.

Bir uyarı: Bu sadece ekler bu kurallara .deploy.cmd script, yani işe yaramaz olarak kullanmak isterseniz, grafik IIS Yöneticisi için paket dağıtımı olarak değil kullanan script (aynı muhtemelen gider dağıtım VS, ama işaretli değil).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • WePlayWeWatch

    WePlayWeWatc

    3 Temmuz 2013