RSCG – ThisAssembly
RSCG – ThisAssembly
name | ThisAssembly |
nuget | https://www.nuget.org/packages/ThisAssembly |
link | https://www.clarius.org/ThisAssembly/ |
author | Daniel Cazzulino |
The ThisAssembly.Info allows you access to the Assembly Information as constants, instead of going to reflection each time.
I found useful to see the assembly version right away in any project that I have.
This is how you can use ThisAssembly .
The code that you start with is
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 | < Project Sdk = "Microsoft.NET.Sdk" > < PropertyGroup > < OutputType >Exe</ OutputType > < TargetFramework >netcoreapp7.0</ TargetFramework > </ PropertyGroup > < PropertyGroup > < EmitCompilerGeneratedFiles >true</ EmitCompilerGeneratedFiles > < CompilerGeneratedFilesOutputPath >$(BaseIntermediateOutputPath)\GeneratedX</ CompilerGeneratedFilesOutputPath > </ PropertyGroup > < PropertyGroup > < Version >2023.5.7.800</ Version > </ PropertyGroup > < ItemGroup > < PackageReference Include = "ThisAssembly" Version = "1.2.14" OutputItemType = "Analyzer" ReferenceOutputAssembly = "false" > < PrivateAssets >all</ PrivateAssets > < IncludeAssets >runtime; build; native; contentfiles; analyzers; buildtransitive</ IncludeAssets > </ PackageReference > </ ItemGroup > </ Project > |
The code that you will use is
1 2 | var strVersion = ThisAssembly.Info.Version; System.Console.WriteLine(strVersion); |
The code that is generated is
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System.CodeDom.Compiler; using System.Runtime.CompilerServices; /// <summary> /// Provides access to the current assembly information as pure constants, /// without requiring reflection. /// </summary> partial class ThisAssembly { /// <summary> /// Gets the AssemblyInfo attributes. /// </summary> [GeneratedCode( "ThisAssembly.AssemblyInfo" , "1.2.14" )] [CompilerGenerated] public static partial class Info { public const string Company = @"RSCG_Version" ; public const string Configuration = @"Debug" ; public const string FileVersion = @"2023.5.7.800" ; public const string InformationalVersion = @"2023.5.7.800" ; public const string Product = @"RSCG_Version" ; public const string Title = @"RSCG_Version" ; public const string Version = @"2023.5.7.800" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // ThisAssembly.Constants: 1.2.14 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.Globalization; partial class ThisAssembly { public static partial class Git { /// <summary> /// => @"[pending build]" /// </summary> public const string Branch = @"[pending build]" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // ThisAssembly.Constants: 1.2.14 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.Globalization; partial class ThisAssembly { public static partial class Git { /// <summary> /// => @"[pending build]" /// </summary> public const string Commit = @"[pending build]" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // ThisAssembly.Constants: 1.2.14 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.Globalization; partial class ThisAssembly { public static partial class Git { /// <summary> /// => @"[pending build]" /// </summary> public const string Root = @"[pending build]" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // ThisAssembly.Constants: 1.2.14 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.Globalization; partial class ThisAssembly { public static partial class Git { /// <summary> /// => @"[pending build]" /// </summary> public const string Sha = @"[pending build]" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // ThisAssembly.Constants: 1.2.14 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.Globalization; partial class ThisAssembly { public static partial class Git { /// <summary> /// => @"[pending build]" /// </summary> public const string Url = @"[pending build]" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System.CodeDom.Compiler; using System.Runtime.CompilerServices; /// <summary> /// Provides access to the current assembly information as pure constants, /// without requiring reflection. /// </summary> partial class ThisAssembly { /// <summary> /// Gets the assembly metadata. /// </summary> [GeneratedCode( "ThisAssembly.Metadata" , "1.2.14" )] [CompilerGenerated] public static partial class Metadata { } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System.CodeDom.Compiler; using System.Runtime.CompilerServices; /// <summary> /// Provides access to the current assembly information as pure constants, /// without requiring reflection. /// </summary> partial class ThisAssembly { /// <summary> /// Gets the project properties. /// </summary> [GeneratedCode( "ThisAssembly.Project" , "1.2.14" )] [CompilerGenerated] public static partial class Project { /// <summary>AssemblyName = RSCG_Version</summary> public const string AssemblyName = @"RSCG_Version" ; /// <summary>RootNamespace = RSCG_Version</summary> public const string RootNamespace = @"RSCG_Version" ; /// <summary>TargetFrameworkIdentifier = .NETCoreApp</summary> public const string TargetFrameworkIdentifier = @".NETCoreApp" ; /// <summary>TargetFrameworkMoniker = .NETCoreApp,Version=v7.0</summary> public const string TargetFrameworkMoniker = @".NETCoreApp,Version=v7.0" ; /// <summary>TargetFrameworkVersion = v7.0</summary> public const string TargetFrameworkVersion = @"v7.0" ; } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | using System; using System.IO; using System.Linq; using System.Reflection; static class EmbeddedResource { static readonly string baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "" ; public static string GetContent( string relativePath) { using var stream = GetStream(relativePath); using var reader = new StreamReader(stream); return reader.ReadToEnd(); } public static byte [] GetBytes( string relativePath) { using var stream = GetStream(relativePath); var bytes = new byte [stream.Length]; stream.Read(bytes, 0, bytes.Length); return bytes; } public static Stream GetStream( string relativePath) { var filePath = Path.Combine(baseDir, Path.GetFileName(relativePath)); if (File.Exists(filePath)) return File.OpenRead(filePath); var baseName = Assembly.GetExecutingAssembly().GetName().Name; var resourceName = relativePath .TrimStart( '.' ) .Replace( '/' , '.' ) .Replace( '\\' , '.' ); var manifestResourceName = Assembly.GetExecutingAssembly() .GetManifestResourceNames().FirstOrDefault(x => x.EndsWith(resourceName)); if ( string .IsNullOrEmpty(manifestResourceName)) throw new InvalidOperationException($ "Did not find required resource ending in '{resourceName}' in assembly '{baseName}'." ); return Assembly.GetExecutingAssembly().GetManifestResourceStream(manifestResourceName) ?? throw new InvalidOperationException($ "Did not find required resource '{manifestResourceName}' in assembly '{baseName}'." ); } } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | using System.Collections.Concurrent; using System.Resources; using System.Runtime.CompilerServices; /// <summary> /// Provides access to the current assembly information as pure constants, /// without requiring reflection. /// </summary> partial class ThisAssembly { /// <summary> /// Access the strings provided by resource files in the project. /// </summary> [CompilerGenerated] public static partial class Strings { static ConcurrentDictionary< string , ResourceManager> resourceManagers = new ConcurrentDictionary< string , ResourceManager>(); static ResourceManager GetResourceManager( string resourceName) => resourceManagers.GetOrAdd(resourceName, name => new ResourceManager(name, typeof (Strings).Assembly)); } } |
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/ThisAssembly
Leave a Reply