Bagaimana cara sinkronisasi SVN nomor revisi dengan saya ASP.NET situs web?

Stack Overflow memiliki subversion nomor versi di bawah:

svn revisi: 679

Saya ingin menggunakan seperti otomatis versioning dengan saya .NET Situs Web/Aplikasi, Bentuk Jendela, WPD proyek/solusi.

Bagaimana saya menerapkan ini?

Mengomentari pertanyaan (3)
Larutan

Terlihat seperti Jeff menggunakan CruiseControl.NET berdasarkan beberapa membolak-balik podcast transkrip. Hal ini tampaknya memiliki penyebaran otomatis kapasitas dari sumber kontrol untuk produksi. Mungkin ini menjadi tempat penyisipan yang terjadi?

Komentar (2)

Kami melakukan ini dengan xUnit.net untuk otomatis kami membangun. Kita menggunakan CruiseControl.net (dan berusaha keluar TeamCity). MSBuild tugas yang kami jalankan untuk integrasi berkesinambungan secara otomatis mengubah nomor yang membangun untuk kami, sehingga dihasilkan membangun file ZIP berisi baik berversi set Dll dan Ongkos.

Kami MSBuild file berisi UsingTask referensi untuk DLL yang tidak regular expression pengganti: (anda're welcome untuk menggunakan DLL ini, seperti's ditutupi oleh MS-PL lisensi juga)

<UsingTask
AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll"
TaskName="CodePlex.MSBuildTasks.RegexReplace"/>

Berikutnya, kita mengekstrak nomor yang membangun, yang disediakan secara otomatis oleh CI sistem. Anda juga bisa mendapatkan sumber kendali penyedia untuk menyediakan sumber nomor revisi jika anda ingin, tapi kami menemukan membangun # di CI sistem yang lebih berguna, karena tidak hanya dapat melihat integrasi hasil oleh CI nomor yang membangun, yang juga menyediakan link kembali ke changeset(s) yang termasuk dalam membangun.

<!-- Cascading upaya untuk menemukan nomor yang membangun -->

<PropertyGroup Kondisi=",'$(BuildNumber)' == ''"> <BuildNumber>$(BUILD_NUMBER)</BuildNumber> </PropertyGroup> <PropertyGroup Kondisi=",'$(BuildNumber)' == ''"> <BuildNumber>$(ccnetlabel)</BuildNumber> </PropertyGroup> <PropertyGroup Kondisi=",'$(BuildNumber)' == ''"> <BuildNumber>0</BuildNumber> </PropertyGroup>

(Kami mencoba BUILD_NUMBER, yang dari TeamCity, maka ccnetlabel, yang dari CC.net dan jika tidak hadir, kita default ke 0, sehingga kita dapat menguji otomatis membangun naskah secara manual.)

Selanjutnya, kita memiliki tugas yang menetapkan nomor yang membangun ke GlobalAssemblyInfo.cs file yang kita link ke semua proyek-proyek kami:

<Nama Target="SetVersionNumber">
<RegexReplace
Pola='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)'
Penggantian='AssemblyVersion("$1.$(BuildNumber)")'
File='GlobalAssemblyInfo.cs'/>
<Exec Perintah="attrib -r xunit.installer\App.mewujudkan"/>
</Target>

Ini menemukan AssemblyVersion atribut, dan menggantikan yang.b.c.d nomor versi dengan.b.c.BuildNumber. Kita biasanya akan meninggalkan sumber diperiksa ke pohon dengan tiga bagian pembangun jumlah tetap, dan keempat nol (f.e., hari ini's 1.0.2.0).

Dalam proses membangun, pastikan SetVersionNumber tugas mendahului anda membangun tugas. Pada akhirnya, kami menggunakan Resleting tugas untuk zip membangun hasil sehingga kami memiliki sejarah biner untuk setiap otomatis membangun.

Komentar (0)

Anda dapat melakukannya dengan menambahkan kode berikut di mana saja dalam kode anda

$Id:$

Jadi misalnya @Jeff lakukan:

<div id="svnrevision">svn revision: $Id:$</div>

dan ketika diperiksa di server diganti $Id:$ dengan saat ini nomor revisi. Saya juga menemukan referensi ini]1.

Ada juga $tanggal Upload:$, $Rev:$, $Revision:$

Komentar (7)

Jika anda're menggunakan ASP.Net MVC (seperti StackOverflow tidak), saya've menulis sebuah mudah untuk mengikuti 3 langkah panduan tentang cara untuk secara otomatis mengambil dan menampilkan terbaru SVN revisi. Panduan terinspirasi oleh pemikiran diri sendiri tentang pertanyaan ini! :o)

Komentar (5)

@Balon Jika anda menggunakan TortoiseSVN, anda dapat menggunakan dikemas SubWCRev program. Itu permintaan kerja copy dan memberitahu anda hanya tertinggi nomor revisi. Harus diakui, ini tampaknya menjadi klien-sisi pendekatan untuk server-side masalah, tapi sejak itu's nice baris perintah program, anda harus mampu menangkap output untuk penggunaan yang cukup mudah.

Komentar (0)

$rev dan lain-lain seperti itu adalah revisi untuk file individual, sehingga mereka tidak't berubah kecuali perubahan file. Nomor pada halaman web ini (kemungkinan besar, saya'm asumsi di sini) svn nomor revisi untuk keseluruhan proyek. Yang berbeda dari file revisi, yang lain telah menunjuk ke.

Dalam hal ini saya berasumsi bahwa CCNET menarik revisi jumlah proyek dan menulis ulang bagian dari halaman web dengan nomor itu. Setiap CI solusi harus mampu melakukan hal ini, mengatur ini sendiri dengan CCNET dan Teamcity (meskipun bukan halaman web, tapi otomatis versi penyebaran/majelis versi).

Dalam rangka bagi anda untuk melakukan hal ini, menggunakan CI solusi yang mendukungnya, atau menggunakan proses membangun (MSbuild/Nant) untuk menyimpan versi itu dan menulis ke file sebelum "menggunakan" itu.

Komentar (0)

Untuk menambah @BradWilson's jawaban: "Anda juga bisa mendapatkan sumber kendali penyedia untuk menyediakan sumber nomor revisi jika anda ingin"

Untuk menghubungkan Subversi dan MSBuild: MSBuild Masyarakat Tugas Project

Komentar (0)