Saya menjawab pertanyaan serupa tetapi berbeda di Bagaimana Anda menyertakan file tambahan menggunakan paket penyebaran web VS2010? .
Dalam skenario Anda, Anda menggunakan acara pasca pembangunan, saya akan merekomendasikan untuk menghentikan acara pasca membangun dan menerapkan tindakan Anda menggunakan target MSBuild Anda sendiri daripada acara pasca membangun. Di bawah ini Anda akan menemukan teks dari jawaban lainnya.
Dari: Bagaimana Anda menyertakan file tambahan menggunakan paket penyebaran web VS2010?
Pertanyaan bagus. Saya baru saja memposting entri blog yang sangat rinci tentang ini di Alat Penyebaran Web (MSDeploy): Paket Bangun termasuk file tambahan atau tidak termasuk file tertentu .
Berikut sinopsisnya. Setelah memasukkan file, saya juga menunjukkan cara mengecualikan file.
Termasuk File Ekstra
Memasukkan file ekstra ke dalam paket sedikit lebih sulit tetapi tetap tidak penting jika Anda merasa nyaman dengan MSBuild, dan jika tidak, bacalah ini. Untuk melakukan ini kita perlu menghubungkan ke bagian proses yang mengumpulkan file untuk dikemas. Target yang perlu kita perluas disebut CopyAllFilesToSingleFolder. Target ini memiliki properti ketergantungan, PipelinePreDeployCopyAllFilesToOneFolderDependsOn, yang dapat kita manfaatkan dan masukkan target kita sendiri. Jadi kita akan membuat target bernama CustomCollectFiles dan memasukkannya ke dalam proses. Kami mencapai ini dengan yang berikut (ingat setelah pernyataan impor).
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
Ini akan menambahkan target kita ke proses, sekarang kita perlu menentukan target itu sendiri. Anggaplah Anda memiliki folder bernama Extra Files yang berada 1 tingkat di atas proyek web Anda. Anda ingin memasukkan semua file itu. Ini adalah target CustomCollectFiles dan kita akan membahasnya 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 di atribut Include memberi tahu untuk mengambil semua file di folder itu dan folder apa pun di bawahnya. Kemudian saya menggunakan item ini untuk mengisi item FilesForPackagingFromProject. Ini adalah item yang sebenarnya digunakan MSDeploy untuk menambahkan file tambahan. Juga perhatikan bahwa saya menyatakan nilai metadata DestinationRelativePath. Ini akan menentukan jalur relatif yang akan ditempatkan dalam paket. Saya menggunakan pernyataan Extra Files% (RecursiveDir)% (Filename)% (Extension) di sini. Apa yang dikatakannya adalah meletakkannya di lokasi relatif yang sama dalam paket seperti di bawah folder File Ekstra.
Mengecualikan file
Jika Anda membuka file proyek dari aplikasi web yang dibuat dengan VS 2010 di bagian bawahnya, Anda akan menemukan baris dengan.
<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 menempatkan jika setelah! Jadi jika Anda memiliki file untuk dikecualikan, ada nama item, ExcludeFromPackageFiles, yang dapat digunakan untuk melakukannya. Misalnya, Anda memiliki file bernama Sample.Debug.js yang disertakan dalam aplikasi web Anda, tetapi Anda ingin file tersebut dikecualikan dari paket yang dibuat. Anda dapat menempatkan potongan di bawah ini 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 metadata FromTarget di sini. Saya tidak akan membahasnya di sini, tetapi Anda harus tahu untuk selalu menjelaskannya.