Mengatur atribut assembly dalam file proyek
Anda dapat menggunakan properti MSBuild untuk mengubah properti proyek terkait paket menjadi atribut rakitan dalam file kode yang dihasilkan. Selanjutnya, Anda dapat menggunakan item MSBuild untuk menambahkan atribut assembly arbitrer ke file yang dihasilkan.
Menggunakan atribut assembly properti paket
Properti GenerateAssemblyInfo
MSBuild mengontrol AssemblyInfo
pembuatan atribut untuk proyek. GenerateAssemblyInfo
Ketika nilainya adalah true
(yang merupakan default), properti proyek terkait paket diubah menjadi atribut assembly. Tabel berikut mencantumkan properti proyek yang membuat atribut. Tabel ini juga mencantumkan properti yang dapat Anda gunakan untuk menonaktifkan pembuatan tersebut per atribut, misalnya:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
Properti MSBuild | Atribut rakitan | Properti untuk menonaktifkan pembuatan atribut |
---|---|---|
Company |
AssemblyCompanyAttribute | GenerateAssemblyCompanyAttribute |
Configuration |
AssemblyConfigurationAttribute | GenerateAssemblyConfigurationAttribute |
Copyright |
AssemblyCopyrightAttribute | GenerateAssemblyCopyrightAttribute |
Description |
AssemblyDescriptionAttribute | GenerateAssemblyDescriptionAttribute |
FileVersion |
AssemblyFileVersionAttribute | GenerateAssemblyFileVersionAttribute |
InformationalVersion |
AssemblyInformationalVersionAttribute | GenerateAssemblyInformationalVersionAttribute |
Product |
AssemblyProductAttribute | GenerateAssemblyProductAttribute |
AssemblyTitle |
AssemblyTitleAttribute | GenerateAssemblyTitleAttribute |
AssemblyVersion |
AssemblyVersionAttribute | GenerateAssemblyVersionAttribute |
NeutralLanguage |
NeutralResourcesLanguageAttribute | GenerateNeutralResourcesLanguageAttribute |
Catatan tentang pengaturan ini:
AssemblyVersion
danFileVersion
default ke nilai$(Version)
tanpa akhiran. Misalnya, jika$(Version)
adalah1.2.3-beta.4
, nilai akan menjadi1.2.3
.InformationalVersion
default ke nilai$(Version)
.- Jika properti
$(SourceRevisionId)
ada, properti ditambahkan keInformationalVersion
. Anda dapat menonaktifkan perilaku ini menggunakanIncludeSourceRevisionInInformationalVersion
. - Properti
Copyright
danDescription
juga digunakan untuk metadata NuGet. Configuration
, yang default keDebug
, dibagikan dengan semua target MSBuild. Anda dapat mengaturnya melalui opsi--configuration
perintahdotnet
, misalnya, paket dotnet.- Beberapa properti digunakan saat membuat paket NuGet. Untuk mengetahui informasi selengkapnya, lihat Properti paket.
Mengatur atribut arbitrer
Anda juga dapat menambahkan atribut assembly Anda sendiri ke file yang dihasilkan. Untuk melakukannya, tentukan <AssemblyAttribute>
item MSBuild yang memberi tahu SDK jenis atribut apa yang akan dibuat. Item ini juga harus menyertakan parameter konstruktor apa pun yang diperlukan untuk atribut tersebut. Misalnya, System.Reflection.AssemblyMetadataAttribute atribut memiliki konstruktor yang mengambil dua string:
- Nama untuk menjelaskan nilai arbitrer.
- Nilai yang akan disimpan.
Jika Anda memiliki Date
properti di MSBuild yang berisi tanggal saat rakitan dibuat, Anda dapat menggunakan AssemblyMetadataAttribute
untuk menyematkan tanggal tersebut ke dalam atribut rakitan menggunakan kode MSBuild berikut:
<ItemGroup>
<!-- Include must be the fully qualified .NET type name of the Attribute to create. -->
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<!-- _Parameter1, _Parameter2, etc. correspond to the
matching parameter of a constructor of that .NET attribute type -->
<_Parameter1>BuildDate</_Parameter1>
<_Parameter2>$(Date)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
Item ini memberi tahu .NET SDK untuk memancarkan C# berikut (atau F# atau Visual Basic yang setara) sebagai atribut tingkat rakitan:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(String tanggal aktual akan menjadi apa pun yang Anda berikan pada saat build.)
Jika atribut memiliki jenis parameter selain System.String
, Anda dapat menentukan parameter dengan menggunakan pola elemen XML tertentu yang didukung oleh tugas MSBuild WriteCodeFragment
. Lihat tugas WriteCodeFragment - Menghasilkan atribut tingkat perakitan.
Bermigrasi dari .NET Framework
Jika Anda memigrasikan proyek .NET Framework ke .NET 6 atau yang lebih baru, Anda mungkin mengalami kesalahan yang terkait dengan file info perakitan duplikat. Itu karena templat proyek .NET Framework membuat file kode dengan atribut info perakitan yang ditetapkan. File biasanya terletak di .\Properties\AssemblyInfo.cs atau .\Properties\AssemblyInfo.vb. Namun, proyek bergaya SDK juga menghasilkan file ini untuk Anda berdasarkan pengaturan proyek.
Saat memindahkan kode Anda ke .NET 6 atau yang lebih baru, lakukan salah satu hal berikut:
- Nonaktifkan pembuatan file kode sementara yang berisi atribut info perakitan dengan mengatur
GenerateAssemblyInfo
kefalse
di file proyek Anda. Ini memungkinkan Anda menyimpan file AssemblyInfo. - Migrasikan pengaturan dalam file AssemblyInfo ke file proyek, lalu hapus file AssemblyInfo .