Sejak inti dotnet pindah kembali ke .csproj
format ada autogenerated baru MyProject.AssemblyInfo.cs
yang berisi antara lain.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Perhatikan bahwa ini secara otomatis dibuat ulang setiap bangunan. Sebelumnya file ditemukan di direktori / obj /, sekarang tampaknya hanya dalam memori karena file tidak dapat ditemukan pada disk dan mengklik pesan kesalahan tidak membuka file apa pun.
Karena mereka didefinisikan di sana saya tidak dapat mendefinisikannya sendiri dalam klasik AssemblyInfo.cs
.
Di mana / bagaimana saya bisa mendefinisikan Perusahaan dan Versi proyek?
Jawaban:
Seperti yang sudah Anda perhatikan, Anda dapat mengontrol sebagian besar pengaturan ini dalam .csproj.
Jika Anda lebih suka menyimpan ini di AssemblyInfo.cs, Anda dapat mematikan atribut perakitan yang dibuat secara otomatis.
Jika Anda ingin melihat apa yang terjadi di bawah tenda, checkout Microsoft.NET.GenerateAssemblyInfo.targets di dalam Microsoft.NET.Sdk.
sumber
Pengaturan tersebut telah pindah ke file .csproj.
Secara default mereka tidak muncul tetapi Anda dapat menemukannya dari Visual Studio 2017 di
Package
tab properti proyek .Setelah disimpan, nilai-nilai itu dapat ditemukan di
MyProject.csproj
Di tab informasi properti explorer file,
FileVersion
ditampilkan sebagai "Versi File" danVersion
ditampilkan sebagai "Versi produk"sumber
Class Library (.NET Standard)
. Apakah Anda tahu mengapa? Saya menggunakan Versi 15.1, Rilis 26403.7, Edisi Komunitas.Saya melakukan hal berikut untuk proyek .NET Standard 2.0 saya.
Buat
Directory.Build.props
file (misalnya di root repo Anda) dan pindahkan properti untuk dibagikan dari.csproj
file ke file ini.MSBuild akan mengambilnya secara otomatis dan menerapkannya pada autogenerated
AssemblyInfo.cs
.Mereka juga bisa diterapkan ke paket nuget ketika membangun satu dengan
dotnet pack
atau melalui UI di Visual Studio 2017.Lihat https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
sumber
Anda selalu dapat menambahkan AssemblyInfo.cs Anda sendiri , yang berguna untuk
InternalsVisibleToAttribute
,CLSCompliantAttribute
dan orang lain yang tidak dihasilkan secara otomatis.Menambahkan AssemblyInfo.cs ke Proyek
<project name> > Add > New Folder
.Add > New Item...
.Menekan Atribut-Atribut Otomatis
Jika Anda ingin memindahkan atribut Anda kembali ke AssemblyInfo.cs alih-alih membuatnya dihasilkan secara otomatis, Anda dapat menekannya di MSBuild seperti yang ditunjukkan natemcmaster dalam jawabannya .
sumber
Menambah jawaban NightOwl888, Anda dapat melangkah lebih jauh dan menambahkan
AssemblyInfo
kelas daripada hanya kelas biasa:sumber
Saya ingin memperluas topik ini / jawaban dengan yang berikut ini. Seperti yang disebutkan seseorang, AssemblyInfo yang dibuat secara otomatis ini dapat menjadi penghambat bagi alat eksternal. Dalam kasus saya, menggunakan FinalBuilder , saya punya masalah bahwa AssemblyInfo tidak diperbarui dengan membangun tindakan. Rupanya, FinalBuilder bergantung pada
~proj
file untuk menemukan lokasi AssemblyInfo . Saya pikir, itu mencari di mana saja di bawah folder proyek. Tidak. Jadi, ubah inihanya melakukan setengah pekerjaan, itu memungkinkan info perakitan khusus jika dibangun oleh VS IDE / MS Build. Tapi saya perlu FinalBuilder melakukannya juga tanpa manipulasi manual untuk file info perakitan. Saya harus memenuhi semua program, MSBuild / VS dan FinalBuilder.
Saya memecahkan ini dengan menambahkan entri ke yang sudah ada
ItemGroup
Sekarang, setelah memiliki item ini, FinalBuilder menemukan lokasi AssemblyInfo dan memodifikasi file. Sementara tindakan
None
memungkinkan MSBuild / DevEnv mengabaikan entri ini dan tidak lagi melaporkan kesalahan berdasarkanCompile
tindakan yang biasanya disertai dengan entri Info Perakitan dalamproj
file.sumber