I noticed in new .NET Core projects there is no AssemblyInfo.cs
file created. I have seen that you can still set assembly attributes such as AssemblyVersion
and so forth.
Are there still any valid reasons to use an AssemblyInfo.cs file?
You can set the assembly version using the AssemblyVersionAttribute. Assembly attributes are usually applied in the AssemblyInfo.
I can get the Assembly Version with the following line of code: Version version = Assembly.
It's the version number used by framework during build and at runtime to locate, link, and load the assemblies. When you add reference to any assembly in your project, it's this version number that gets embedded.
The AssemblyVersion attribute assigns the version number of the assembly, and this is embedded in the manifest. Version information for an assembly consists of the following four values : a major and minor version number, and two further optional build and revision numbers.
You can absolutely create an AssemblyInfo.cs
file and configure your assembly like you did in the past. Of course, since the properties are set using assembly attributes, you do not need to use AssemblyInfo
but can choose any other file name or even an existing one.
That being said, the reason that the AssemblyInfo.cs
is no longer included in the default templates is that the new SDK-style project type supports setting this information within the csproj
project file.
So the usual approach to setting the version of your assembly would be to set the Version
property within your project file (or have that automatically set as part of your build process). For example:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> <Version>1.2.3</Version> </PropertyGroup> … </Project>
Since this is a MSBuild property, you can also set this during the build process e.g. with dotnet build /p:Version=1.2.3
.
There are also the properties VersionPrefix
and VersionSuffix
which can be used to automatically construct version numbers from the environment (e.g. Git commit ids, or build numbers).
In addition to the version related properties, there are also some more NuGet properties you can set in the project file, which makes the AssemblyInfo.cs
mostly redundant.
Reasons for still using an AssemblyInfo.cs file might include
[AssembyAttributes]
from Xml Elements with matching names in the csproj
file, but it doesn't support autogeneration of arbitrary [AssembyAttributes]
or other metadata for your assembly.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With