Saya punya solusi dengan banyak proyek. Saya mencoba mengoptimalkan file AssemblyInfo.cs dengan menautkan satu solusi file info perakitan lebar. Apa praktik terbaik untuk melakukan ini? Atribut mana yang harus dalam file solusi lebar dan mana yang spesifik untuk proyek / perakitan?
Sunting: Jika Anda tertarik ada pertanyaan lanjutan Apa perbedaan antara AssemblyVersion, AssemblyFileVersion, dan AssemblyInformationalVersion?
.net
assemblies
attributes
assemblyinfo
Jakub Šturc
sumber
sumber
AssemblyCultureAttribute
layak penjelasan yang lebih baik. Atribut sebaiknya tidak ada sama sekali (kecuali ini adalah perakitan satelit). Saat menggunakan rakitan satelit dalam skala besar, seseorang mungkin memerlukan tiga, bukan dua tingkat file info rakitan (global, rakitan utama, dan rakitan satelit yang hanya menentukan budaya dalam kasus ini).Dalam kasus saya, kami sedang membangun produk yang kami punya solusi Visual Studio, dengan berbagai komponen dalam proyek mereka sendiri. Atribut umum pergi. Dalam solusinya, ada sekitar 35 proyek, dan info perakitan umum (CommonAssemblyInfo.cs), yang memiliki atribut berikut:
Atribut lain seperti AssemblyTitle, AssemblyVersion dll, kami berikan berdasarkan per-perakitan. Saat membangun sebuah majelis, baik AssemblyInfo.cs dan CommonAssemblyInfo.cs dibangun di setiap unit. Ini memberi kami yang terbaik dari kedua dunia di mana Anda mungkin ingin memiliki beberapa atribut umum untuk semua proyek dan nilai-nilai spesifik untuk beberapa yang lain.
Semoga itu bisa membantu.
sumber
<Compile Include="$(MSBuildThisFileDirectory)..\Common\CommonAssemblyInfo.cs"/>
, direktif MSBuild yang bahkan mungkin dalamCommon.targets
file bersama . Kode Yay digunakan kembali.Solusi yang disajikan oleh @JRoppert hampir sama dengan apa yang saya lakukan. Satu-satunya perbedaan adalah bahwa saya meletakkan baris berikut ini di file AssemblyInfo.cs lokal karena mereka dapat bervariasi dengan setiap perakitan:
Saya juga (umumnya) menggunakan satu info perakitan umum per solusi, dengan asumsi bahwa satu solusi adalah satu lini produk / produk yang dapat dirilis. File info rakitan umum juga memiliki:
Yang akan mengatur nilai "ProductVersion" yang ditampilkan oleh Windows Explorer.
sumber
Tugas Komunitas MSBuild berisi tugas kustom yang disebut AssemblyInfo yang dapat Anda gunakan untuk membuat assemblyinfo.cs Anda. Ini membutuhkan sedikit pengeditan tangan untuk menggunakan file csproj Anda, tetapi bermanfaat.
sumber
Menurut pendapat saya menggunakan GlobalAssemblyInfo.cs lebih banyak masalah daripada nilainya, karena Anda perlu memodifikasi setiap file proyek dan ingat untuk memodifikasi setiap proyek baru, sedangkan Anda mendapatkan AssemblyInfo.cs secara default.
Untuk perubahan nilai global (mis. Perusahaan, Produk, dll) perubahan biasanya sangat jarang dan mudah dikelola. Saya tidak berpikir KERING harus menjadi pertimbangan. Jalankan skrip MSBuild berikut (tergantung pada MSBuild Extension Pack ) ketika Anda ingin mengubah nilai secara manual di semua proyek sebagai satu kali:
sumber
Untuk berbagi file di antara banyak proyek, Anda dapat menambahkan file yang ada sebagai tautan.
Untuk melakukan ini, tambahkan file yang ada, dan klik "Tambahkan sebagai Tautan" di pemilih file. (sumber: free.fr )
Adapun apa yang harus dimasukkan dalam file bersama, saya sarankan meletakkan hal-hal yang akan dibagikan di seluruh majelis. Hal-hal seperti hak cipta, perusahaan, mungkin versi.
sumber
Tidak disarankan menggunakan file AseemblyInfo.cs tunggal untuk banyak proyek. File AssemblyInfo termasuk informasi yang mungkin relevan hanya untuk perakitan tertentu. Dua informasi yang paling jelas adalah
AssemblyTitle
danAssemblyVersion
.Solusi yang lebih baik mungkin menggunakan
targets
file, yang ditangani oleh MSBuild, untuk "menyuntikkan" atribut perakitan ke lebih dari satu proyek.sumber
Satu hal yang menurut saya berguna adalah untuk menghasilkan elemen AssemblyVersion (dll) dengan menerapkan token-subtitusi pada fase pra-bangun.
Saya menggunakan TortoiseSvn, dan mudah digunakan
SubWCRev.exe
untuk mengubah templatAssemblyInfo.wcrev
menjadiAssemblyInfo.cs
. Baris yang relevan dalam template mungkin terlihat seperti ini:Elemen ketiga adalah nomor revisi. Saya menggunakan elemen keempat untuk memeriksa saya tidak lupa untuk melakukan file baru atau diubah (elemen keempat adalah 00 jika semuanya OK).
Omong-omong, tambahkan
AssemblyInfo.wcrev
ke kontrol versi Anda dan abaikanAssemblyInfo.cs
jika Anda menggunakan ini.sumber