Saya hanya ingin tahu bagaimana saya bisa secara otomatis meningkatkan build (dan versi?) File saya menggunakan Visual Studio (2005).
Jika saya mencari properti say C:\Windows\notepad.exe
, tab Version memberi "Versi file: 5.1.2600.2180". Saya ingin mendapatkan angka-angka keren ini dalam versi dll saya juga, bukan versi 1.0.0.0, yang mari kita hadapi itu agak membosankan.
Saya mencoba beberapa hal, tetapi sepertinya itu bukan fungsi out-of-box, atau mungkin saya hanya mencari di tempat yang salah (seperti biasa).
Saya bekerja dengan sebagian besar proyek web ....
Saya melihat keduanya:
- http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
- http://www.codeproject.com/KB/dotnet/build_versioning.aspx
dan saya tidak bisa percaya begitu banyak upaya untuk melakukan sesuatu adalah praktik standar.
EDIT: Tidak berfungsi di VS2005 sejauh yang saya tahu ( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )
sumber
Jawaban:
Dalam visual Studio 2008, berikut ini berfungsi.
Temukan file AssemblyInfo.cs dan temukan 2 baris ini:
Anda dapat mencoba mengubahnya ke:
Tetapi ini tidak akan memberi Anda hasil yang diinginkan, Anda akan berakhir dengan Versi Produk 1.0. * Dan Versi File 1.0.0.0 . Bukan yang kamu inginkan!
Namun, jika Anda menghapus baris kedua dan hanya memiliki:
Kemudian kompiler akan mengatur Versi File untuk menjadi sama dengan Versi Produk dan Anda akan mendapatkan hasil yang Anda inginkan dari produk peningkatan otomatis dan versi file yang disinkronkan. Misalnya 1.0.3266.92689
sumber
buka file AssemblyInfo.cs dan ubah
untuk
Anda dapat melakukan ini dalam IDE dengan pergi ke project -> properties -> assembly information
Namun ini hanya akan memungkinkan Anda untuk secara otomatis menambah versi Majelis dan akan memberi Anda
kotak pesan jika Anda mencoba menempatkan * di bidang versi file.
Jadi buka saja assemblyinfo.cs dan lakukan secara manual.
sumber
Opsi lain untuk mengubah nomor versi di setiap build adalah menggunakan tugas Versi dari MSBuild.Community.Tasks . Cukup unduh penginstalnya, instal, lalu sesuaikan kode berikut dan tempel setelah
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
di.csproj
file Anda :Catatan: Adaptasi properti StartDate ke lokal Anda. Saat ini tidak menggunakan budaya invarian.
Untuk bangunan ketiga pada 14 Januari 2010, ini dibuat
VersionInfo.cs
dengan konten ini:File ini kemudian harus ditambahkan ke proyek (melalui Tambahkan item yang ada ),
AssemblyVersion
danAssemblyFileVersion
garis dan harus dihapus dariAssemblyInfo.cs
.Algoritma yang berbeda untuk mengubah komponen versi dijelaskan dalam
$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.chm
dan Properties Versi .sumber
Saya datang dengan solusi yang mirip dengan orang Kristen tetapi tanpa tergantung pada tugas Komunitas MSBuild, ini bukan pilihan bagi saya karena saya tidak ingin menginstal tugas-tugas ini untuk semua pengembang kami.
Saya menghasilkan kode dan mengkompilasi ke Majelis dan ingin menambah nomor versi secara otomatis. Namun, saya tidak dapat menggunakan VS 6.0. * Trik AssemblyVersion karena peningkatan otomatis membuat angka setiap hari dan merusak kompatibilitas dengan Assemblies yang menggunakan nomor build yang lebih lama. Sebagai gantinya, saya ingin memiliki AssemblyVersion yang dikodekan dengan keras tetapi AssemblyFileVersion yang bertambah secara otomatis. Saya telah menyelesaikan ini dengan menentukan AssemblyVersion di AssemblyInfo.cs dan menghasilkan VersionInfo.cs di MSBuild seperti ini,
Ini akan menghasilkan file VersionInfo.cs dengan atribut Assembly untuk AssemblyFileVersion di mana versi mengikuti skema YY.MM.DD.TTTT dengan tanggal pembuatan. Anda harus memasukkan file ini dalam proyek Anda dan membangunnya.
sumber
[System.DateTime]::Now
ke dalam satu, jika tidak, ada kondisi balapan yang dapat menyebabkan nomor build lama digunakan jika membangun dekat tengah malam.DateTime.ToString
untuk tujuan demonstratif, atau apakah ada alasan tertentu?Instal add-in Build Versi Increment . Ini memberi Anda jauh lebih banyak kontrol daripada opsi *.
sumber
Untuk mendapatkan nomor versi coba
Untuk mengatur nomor versi, buat / edit AssemblyInfo.cs
Juga sebagai catatan tambahan, angka ketiga adalah jumlah hari sejak 2/1/2000 dan angka keempat adalah setengah dari jumlah total detik dalam sehari. Jadi jika Anda mengkompilasi di tengah malam itu harus nol.
sumber
Ada versi otomatis Visual Studio ekstensi yang mendukung Visual Studio (2012, 2013, 2015) 2017 & 2019.
Tangkapan Layar
sumber
Mengatur a * dalam nomor versi di AssemblyInfo atau di bawah properti proyek seperti yang dijelaskan dalam posting lain tidak berfungsi dengan semua versi Visual Studio / .NET.
Afaik tidak bekerja di VS 2005 (tetapi dalam VS 2003 dan VS 2008). Untuk VS 2005 Anda bisa menggunakan yang berikut ini: Auto Increment Visual Studio 2005 versi membangun dan merevisi nomor pada waktu kompilasi .
Namun ketahuilah bahwa mengubah nomor versi secara otomatis tidak disarankan untuk majelis yang diberi nama kuat. Alasannya adalah bahwa semua referensi untuk perakitan seperti itu harus diperbarui setiap kali perakitan yang direferensikan dibangun kembali karena fakta bahwa referensi perakitan yang bernama kuat selalu merupakan referensi ke versi perakitan tertentu. Microsoft sendiri mengubah nomor versi rakitan .NET Framework hanya jika ada perubahan antarmuka. (NB: Saya masih mencari tautan di MSDN tempat saya membacanya.)
sumber
Untuk mendapatkan informasi incrementing (DateTime) ke properti AssemblyFileVersion yang memiliki keuntungan tidak melanggar dependensi.
Membangun solusi Boog (tidak berfungsi untuk saya, mungkin karena VS2008?), Anda dapat menggunakan kombinasi acara pra-bangun yang menghasilkan file, menambahkan file itu (termasuk properti versinya) dan kemudian menggunakan cara untuk membacakan nilai-nilai itu lagi. Itu adalah..
Pra-Bangun-Acara:
Sertakan file VersionInfo.cs yang dihasilkan (Properties subfolder) ke dalam proyek Anda
Kode untuk mendapatkan Tanggal kembali (tahun ke detik):
Tidak terlalu nyaman .. juga, saya tidak tahu apakah itu menciptakan banyak force-rebuilds (karena file selalu berubah).
Anda bisa membuatnya lebih pintar misalnya jika Anda hanya memperbarui file VersionInfo.cs setiap beberapa menit / jam (dengan menggunakan file sementara dan kemudian menyalin / menimpa VersionInfo.cs nyata jika perubahan yang cukup besar terdeteksi). Saya melakukan ini sekali dengan cukup sukses.
sumber
Atur nomor versi ke "1.0. *" Dan secara otomatis akan mengisi dua nomor terakhir dengan tanggal (dalam beberapa hari dari beberapa titik) dan waktu (setengah detik dari tengah malam)
sumber
Itu ada di properti proyek Anda di bawah Publikasikan
(~ http://screencast.com/t/Vj7rhqJO )
sumber
Cake mendukung penambalan file AssemblyInfo. Dengan kue di tangan Anda memiliki cara tak terbatas untuk menerapkan penambahan versi otomatis.
Contoh sederhana dari penambahan versi seperti kompiler C #:
Sini:
Perhatikan bahwa Anda dapat menambal tidak hanya versi tetapi juga semua informasi lain yang diperlukan .
sumber
Pergi ke Proyek | Properti dan kemudian Informasi Perakitan dan kemudian Versi Perakitan dan letakkan * di kotak terakhir atau kedua ke terakhir (Anda tidak dapat menambahkan komponen Utama atau Minor secara otomatis).
sumber
Gunakan tugas AssemblyInfo dari proyek MSBuild Community Tasks ( http://msbuildtasks.tigris.org/ ), dan mengintegrasikannya ke dalam file .csproj / .vbproj Anda.
Ini memiliki sejumlah opsi, termasuk satu untuk mengikat nomor versi dengan tanggal dan waktu hari.
Direkomendasikan.
sumber
Sampai sekarang, untuk aplikasi saya,
kembali
ver = 1.0.3251.27860
Nilai 3251 adalah jumlah hari sejak 1/1/2000. Saya menggunakannya untuk meletakkan tanggal pembuatan versi di layar splash aplikasi saya. Saat berhadapan dengan seorang pengguna, saya dapat menanyakan tanggal pembuatan yang lebih mudah untuk dikomunikasikan daripada beberapa nomor lama.
(Saya deputi satu orang yang mendukung perusahaan kecil. Pendekatan ini mungkin tidak cocok untuk Anda.)
sumber
Mengubah AssemblyInfo berfungsi di VS2012. Tampaknya aneh bahwa tidak ada lagi dukungan untuk ini di Visual Studio, Anda akan berpikir ini adalah bagian dasar dari proses build / release.
sumber
Cara mendapatkan versinya
{major}.{year}.1{date}.1{time}
Yang ini agak eksperimental, tapi saya suka. Terinspirasi oleh Jeff Atwood @ CodingHorror ( tautan ).
Nomor versi yang dihasilkan menjadi
1.2016.10709.11641
(artinya 2016-07-09 16:41), yang memungkinkan untuk1
s bodoh memimpin )Menambahkan item baru untuk proyek Anda, pilih General -> Template Teks, nama itu sesuatu seperti
CustomVersionNumber
dan (jika ada) komentar keluarAssemblyVersion
danAssemblyFileVersion
diProperties/AssemblyInfo.cs
.Kemudian, ketika menyimpan file ini, atau membangun proyek, ini akan membuat kembali
.cs
file yang terletak sebagai sub-item di bawah.tt
file yang dibuat .sumber
Saya telah membuat aplikasi untuk meningkatkan versi file secara otomatis.
tambahkan baris berikut ke pre-build event command line
C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs
Bangun proyek
Untuk membuatnya lebih sederhana, aplikasi ini hanya melempar pesan jika ada kesalahan, untuk mengonfirmasi itu berfungsi dengan baik, Anda perlu memeriksa versi file di 'Informasi Perakitan'
Catatan: Anda harus memuat ulang solusi di Visual studio untuk tombol 'Informasi Majelis' untuk mengisi bidang, namun file keluaran Anda akan memiliki versi yang diperbarui.
Untuk saran dan permintaan, silakan kirim email ke saya di [email protected]
sumber
Dalam Visual Studio 2019
Itu tidak cukup bagi saya untuk menambahkan
Ketika membangun itu membuat saya kesalahan ini
Larutan
Format ini akhirnya diterima setelah saya set
Deterministic
keFalse
dalamproject.csproj
Edit:
Untuk beberapa alasan, pengaturan
Deterministic
untukFalse
mengacaukan file konfigurasi saya memuatnya dan menyimpannya di lokasi yang berbeda.Penanganan masalah:
Saya menyiapkan acara pasca-pembangunan untuk menambah nomor revisi:
Skrip kumpulan Acara Pasca Bangun
Ini menyebut skrip PowerShell yang dinamai
autoincrement_version.ps1
passing sebagai argumenAssemblyInfo.cs
Skrip Poweshell
Itu otomatis meningkatkan nomor revisi menggunakan Regex
sumber
Mungkin, untuk tugas ini, Anda dapat menggunakan kode seperti ini:
dan menyebutnya dari pemuatan formulir.
Dengan kode ini Anda dapat memperbarui bagian mana pun dari info file di AssemblyInfo.cs (tetapi Anda harus menggunakan struktur direktori "standar").
sumber
AssemblyInfoUtil . Gratis. Sumber terbuka.
sumber
Saya menggunakan pendekatan ini https://stackoverflow.com/a/827209/3975786 dengan menempatkan templat T4 dalam "Item Solusi" dan menggunakannya dengan "Tambahkan sebagai Tautan" di dalam setiap proyek.
sumber
Mungkin sudah terlambat untuk menjawab di sini tapi berharap itu akan menyelesaikan masalah kesibukan seseorang.
Cara otomatis untuk mengubah versi perakitan semua proyek Anda menggunakan skrip PowerShell. Artikel ini akan menyelesaikan banyak masalah Anda.
sumber
Setiap kali saya membangunnya, otomatis menambah angka yang paling tidak signifikan.
Saya tidak tahu cara memperbarui yang lain, tetapi Anda setidaknya harus sudah melihatnya ...
sumber
Bagi siapa pun yang menggunakan Tortoise Subversion, Anda dapat mengikat salah satu nomor versi Anda ke nomor Revisi subversi kode sumber Anda. Saya menemukan ini sangat berguna (Auditor juga suka ini!). Anda melakukan ini dengan memanggil utilitas WCREV di pre-build Anda dan menghasilkan AssemblyInfo.cs Anda dari templat.
Jika template Anda disebut AssemblyInfo.wcrev dan duduk di direktori AssemblyInfo.cs normal, dan kura-kura ada di direktori instalasi default, maka perintah Pra-Bangun Anda terlihat seperti ini (NB Semua pada satu baris):
File template akan menyertakan string substitusi wcrev token: $ WCREV $
eg
Catatan:
Karena AssemblyInfo.cs Anda sekarang dibuat, Anda tidak ingin itu dikontrol versi.
sumber