SORU
30 NİSAN 2010, Cuma


Nasıl ek dosyalar VS2010 web dağıtım paketleri kullanılarak bulunur musunuz?

Yeni web kullanarak visual studio 2010 işlevsellik ambalaj test ediyorum ve pre-build olay kullandığım bir durum karşısında gerekli kopyası geldi .dll uygulamam API çağrıları için kullandığı bin klasörü içine. Birlikte çalışma ile kullanılabilecek bir COM DLL oldukları için bir referans olarak dahil edilemez.

Dağıtım benim paketim oluşturmak, bu dosyaları tek dosya uygulamayı çalıştırmak için gerekli dahil etmek için bu seçeneği seçtiğim zaman göz ardı edilir. Bir şekilde dağıtım ayarları bu dosyalar eklemek için yapılandırma var mı? Şans bu iyi bir Dokümantasyon bulma vardı.

CEVAP
1 Mayıs 2010, CUMARTESİ


Çok güzel bir soru. Ben sadece Web Deployment Tool (MSDeploy) : Build Package including extra files or excluding specific files Bu konu hakkında çok detaylı bir blog girişi yayınladı.

İşte Özet. Dosyaları da dahil olmak üzere sonra, dosyaları dışarıda bırakmak için nasıl göstereceğim.

Ekstra Dosyaları Da Dahil Olmak Üzere

Pakete ek dosyalar da dahil olmak üzere biraz daha zor ama yine de eğer MSBuild ile rahat iseniz, ve eğer bu okuma iseniz hiçbir bigee. Bunu yapmak için ambalaj dosyalarını toplayan kısım kanca ihtiyacımız var. Genişletmek için ihtiyacımız olan hedef CopyAllFilesToSingleFolder denir. Bu hedef girmeleri ve kendi hedefimiz enjekte edebiliriz bir bağımlılık özelliği, PipelinePreDeployCopyAllFilesToOnefolderdependson vardır. Bir hedef CustomCollectFiles adlı oluşturmak ve süreci içine enjekte edeceğiz. Aşağıdaki (ithalat ifadenin unutma) ile bunu başarmak.

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    CustomCollectFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>

  <CopyAllFilesToSingleFolderForMsdeployDependsOn>
    CustomCollectFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>

Bu işlem için hedefimiz katacak, şimdi hedef kendini tanımlamaya ihtiyacımız var. Hadi bir klasör Seviye 1 web projesi üstünde oturan Ek Dosyaların adında olduğunu varsayalım. Tüm dosyaları dahil etmek istediğiniz. Burada CustomCollectFiles hedef ve biz sonra bu konuyu tartışın.

<Target Name="CustomCollectFiles">
  <ItemGroup>
    <_CustomFiles Include="..\Extra Files\**\*" />

    <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

Burada ne yaptığımı madde _CustomFiles oluşturmak ve niteliği Dahil olarak bu klasördeki tüm dosyaları ve bunun altında herhangi bir klasör almasını söyledi. Acaba gerekhariçbu listeden bir şey Exclude _CustomFiles için bir öznitelik ekleyin.

Sonra bu madde FilesForPackagingFromProject madde doldurmak için kullanıyorum. Bu MSDeploy aslında ek dosyalar eklemek için kullandığı madde. Ayrıca meta DestinationRelativePath değer ilan ettim dikkat edin. Bu pakete konacak olan yolunu belirler. Ek Dosyaların bildirimi%(RecursiveDir) (Filename)%%(Uzantı) burada kullandım. Bu söylediklerin Ekstra Files klasörü altında paketinde aynı göreli konuma yerleştirin.

Dosyaları hariç

Eğer bu proje, 2010 yılı sonuna doğru bir web uygulaması VS ile oluşturulan dosyayı açmak için bir satır bulacaksınız.

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

BTW proje dosyası VS içinde açabilirsiniz. Proje üzerinde sağ tıklayarak Kaldır bir Proje seç. Bellekten sonra proje üzerinde sağ tıklayın ve seçin Düzenleme Projesi.

Bu husus, hedefleri ve gereken görevleri vardır. Bizim özelleştirmeleri en eğer sonra emin konur değil, eğer aldıktan sonra olmalı! Eğer bir öğe adı var dışlamak için dosya varsa, ExcludeFromPackageFiles, bunu yapmak için kullanılabilir. Mesela, web uygulamanızda dahil sample.debug.js adında bir dosya var ama bu dosya oluşturulmuş paketler dahil olmak istediğini söylüyor. Parçacık altına alma ifadenin yerleştirebilirsiniz.

<ItemGroup>
  <ExcludeFromPackageFiles Include="Sample.Debug.xml">
    <FromTarget>Project</FromTarget>
  </ExcludeFromPackageFiles>
</ItemGroup>

Bu madde doldurma bildirerek dosyaları otomatik olarak dışlanır. Bu FromTarget kullanımı burada meta unutmayın. Bu konuya burada girmek istemiyorum, ama her zaman belirtmek için bilmeniz gerekir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • circuschina

    circuschina

    16 Mart 2007
  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008