Bagaimana saya bisa membatasi acara post-build saya hanya berjalan untuk satu jenis build?
Saya menggunakan peristiwa untuk menyalin file DLL ke direktori virtual IIS lokal, tapi saya tidak ingin ini terjadi pada server build dalam mode rilis.
Bagaimana saya bisa membatasi acara post-build saya hanya berjalan untuk satu jenis build?
Saya menggunakan peristiwa untuk menyalin file DLL ke direktori virtual IIS lokal, tapi saya tidak ingin ini terjadi pada server build dalam mode rilis.
Acara Pra dan Pasca Bangun dijalankan sebagai skrip batch. Anda dapat melakukan pernyataan bersyarat pada $(ConfigurationName)
.
Contohnya
if $(ConfigurationName) == Debug xcopy something somewhere
FYI, Anda tidak perlu menggunakan goto. Perintah shell IF dapat digunakan dengan kurung bulat:
sumber
"$(ConfigurationName)"
(perhatikan tanda kutip) jika Anda mendapatkan kode kesalahan 255$(ConfigurationName)
kosong (baris perintah acara Post-build).if "$(Configuration)" == "Debug"
bekerja untukku. BTW, jika Anda ingin melakukan sesuatu di semua konfigurasi lain, gunakanif NOT "$(Configuration)" == "Debug"
.Tambahkan acara pembuatan pos Anda seperti biasa. Kemudian simpan proyek Anda, buka di Notepad (atau editor favorit Anda), dan tambahkan kondisi ke grup properti PostBuildEvent. Ini sebuah contoh:
sumber
cd "$(ProjectDir)"
diperluas kecd ""
.<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
. Variabel makro dan semuanya berfungsi seperti biasa.Atau (karena acara dimasukkan ke file batch dan kemudian dipanggil), gunakan yang berikut ini (di kotak Bangun acara, bukan dalam file batch):
Dengan cara ini Anda dapat memiliki acara untuk konfigurasi apapun, dan masih mengelolanya dengan macro daripada harus melewati mereka ke dalam sebuah file batch, ingat bahwa
%1
adalah$(OutputPath)
, dllsumber
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
dan menggunakangoto :$(ConfigurationName)
Visual Studio 2015: Sintaks yang benar adalah (tetap di satu baris):
Tidak ada kesalahan 255 di sini.
sumber
Pada Visual Studio 2019,
.csproj
format modern mendukung penambahan kondisi langsung padaTarget
elemen:UI tidak menyediakan cara untuk mengatur ini, tetapi tampaknya aman meninggalkan
Configuration
atribut di tempat jika Anda membuat perubahan melalui UI.sumber
Anda dapat meneruskan nama konfigurasi ke skrip post-build dan memeriksanya di sana untuk melihat apakah harus dijalankan.
Lulus nama konfigurasi dengan
$(ConfigurationName)
.Memeriksa itu didasarkan pada bagaimana Anda menerapkan langkah post-build - itu akan menjadi argumen baris perintah.
sumber
Ini berfungsi untuk saya di Visual Studio 2015.
Saya menyalin semua file DLL dari folder yang terletak di folder perpustakaan pada tingkat yang sama dengan folder solusi saya ke direktori target proyek yang sedang dibangun.
Menggunakan jalur relatif dari direktori proyek saya dan naik struktur folder dua langkah dengan .. \ .. \ lib
MySolutionFolder
.... MyProject
Lib
sumber
Seperti pengaturan proyek apa pun, buildevents dapat dikonfigurasikan per Konfigurasi. Cukup pilih konfigurasi yang ingin Anda ubah dalam dropdown dialog Halaman Properti dan edit langkah pembuatan posting.
sumber
Di Visual Studio 2012 Anda harus menggunakan (saya pikir di Visual Studio 2010 juga)
$(ConfigurationName)
terdaftar sebagai makro, tetapi tidak ditugaskan.Bandingkan: Makro untuk Membangun Perintah dan Properti
sumber