Pertanyaan yang bagus Saya baru saja memposting entri blog yang sangat rinci tentang hal ini di Web Deployment Tool (MSDeploy): Buat Paket termasuk file tambahan atau tidak termasuk file tertentu .
Inilah sinopsisnya. Setelah memasukkan file, saya juga menunjukkan cara mengecualikan file.
Termasuk File Ekstra
Memasukkan file tambahan ke dalam paket sedikit lebih sulit tetapi masih tidak ada masalah jika Anda nyaman dengan MSBuild, dan jika Anda tidak maka baca ini. Untuk melakukan ini, kita perlu menghubungkan ke bagian dari proses yang mengumpulkan file untuk kemasan. Target yang perlu kita perluas disebut CopyAllFilesToSingleFolder. Target ini memiliki properti dependensi, PipelinePreDeployCopyAllFilesToOneFolderDependsOn, yang dapat kita manfaatkan dan suntikkan target kita sendiri. Jadi kami akan membuat target bernama CustomCollectFiles dan menyuntikkannya ke dalam proses. Kami mencapai ini dengan yang berikut (ingat setelah pernyataan impor).
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
Ini akan menambah target kita ke proses, sekarang kita perlu mendefinisikan target itu sendiri. Mari kita asumsikan bahwa Anda memiliki folder bernama File Ekstra yang terletak 1 tingkat di atas proyek web Anda. Anda ingin memasukkan semua file itu. Ini adalah target CustomCollectFiles dan kami diskusikan setelah itu.
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Extra Files\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
Di sini yang saya lakukan adalah membuat item _CustomFiles dan pada atribut Include menyuruhnya untuk mengambil semua file di folder itu dan folder apa pun di bawahnya. Jika kebetulan Anda perlu mengecualikan sesuatu dari daftar itu, tambahkan Exclude
atribut ke _CustomFiles
.
Kemudian saya menggunakan item ini untuk mengisi item FilesForPackagingFromProject. Ini adalah item yang benar-benar digunakan MSDeploy untuk menambahkan file tambahan. Juga perhatikan bahwa saya mendeklarasikan nilai DestinationRelativePath metadata. Ini akan menentukan jalur relatif yang akan ditempatkan dalam paket. Saya menggunakan pernyataan Extra Files% (RecursiveDir)% (Filename)% (Extension) di sini. Apa yang dikatakannya adalah menempatkannya di lokasi relatif yang sama dalam paket seperti di bawah folder File Ekstra.
Tidak termasuk file
Jika Anda membuka file proyek aplikasi web yang dibuat dengan VS 2010 di bagian bawahnya, Anda akan menemukan sebuah baris.
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
BTW Anda dapat membuka file proyek di dalam VS. Klik kanan pada proyek pilih Unload Project. Kemudian klik kanan pada proyek yang dibongkar dan pilih Edit Proyek.
Pernyataan ini akan mencakup semua target dan tugas yang kita butuhkan. Sebagian besar penyesuaian kami harus setelah impor itu, jika Anda tidak yakin memasukkannya setelah itu! Jadi, jika Anda memiliki file untuk dikecualikan ada nama item, ExcludeFromPackageFiles, yang dapat digunakan untuk melakukannya. Sebagai contoh, katakanlah Anda memiliki file bernama Sample.Debug.xml yang termasuk dalam aplikasi web Anda tetapi Anda ingin file tersebut dikecualikan dari paket yang dibuat. Anda dapat menempatkan cuplikan di bawah setelah pernyataan impor itu.
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
Dengan mendeklarasikan mengisi item ini, file akan secara otomatis dikecualikan. Perhatikan penggunaan FromTarget
metadata di sini. Saya tidak akan membahasnya di sini, tetapi Anda harus tahu untuk selalu menentukannya.