ThisAssembly.Strings 2.0.3

Prefix Reserved
dotnet add package ThisAssembly.Strings --version 2.0.3                
NuGet\Install-Package ThisAssembly.Strings -Version 2.0.3                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ThisAssembly.Strings" Version="2.0.3">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ThisAssembly.Strings --version 2.0.3                
#r "nuget: ThisAssembly.Strings, 2.0.3"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ThisAssembly.Strings as a Cake Addin
#addin nuget:?package=ThisAssembly.Strings&version=2.0.3

// Install ThisAssembly.Strings as a Cake Tool
#tool nuget:?package=ThisAssembly.Strings&version=2.0.3                

This project uses SponsorLink to attribute sponsor status (direct, indirect or implicit). For IDE usage, sponsor status is required. IDE-only warnings will be issued after a grace period otherwise.

This package generates a static ThisAssembly.Strings class with public constants exposing string resources in .resx files or methods with the right number of parameters for strings that use formatting parameters.

alternate text is missing from this package README image

In addition, it groups constants and methods in nested classes according to an optional underscore separator to organize strings. For example, User_InvalidCredentials can be accessed with ThisAssembly.Strings.User.InvalidCredentials if it contains a simple string, or as a method with the right number of parametres if its value has a format string.

Given the following Resx file:

Name Value Comment
Infrastructure_MissingService Service {0} is required. For logging only!
Shopping_NoShipping We cannot ship {0} to {1}.
Shopping_OutOfStock Product is out of stock at this time.
Shopping_AvailableOn Product available on {date:yyyy-MM}.

The following code would be generated:

partial class ThisAssembly
{
    public static partial class Strings
    {
        public static partial class Infrastructure
        {
            /// <summary>
            /// For logging only!
            /// => "Service {0} is required."
            /// </summary>
            public static string MissingService(object arg0)
                => string.Format(CultureInfo.CurrentCulture, 
                    Strings.GetResourceManager("ThisStore.Properties.Resources").GetString("MissingService"), 
                    arg0);
        }

        public static partial class Shopping
        {
            /// <summary>
            /// => "We cannot ship {0} to {1}."
            /// </summary>
            public static string NoShipping(object arg0, object arg1)
                => string.Format(CultureInfo.CurrentCulture, 
                    Strings.GetResourceManager("ThisStore.Properties.Resources").GetString("NoShipping"), 
                    arg0, arg1);

            /// <summary>
            /// => "Product is out of stock at this time."
            /// </summary>
            public static string OutOfStock
                => Strings.GetResourceManager("ThisStore.Properties.Resources").GetString("OutOfStock");

            /// <summary>
            /// Product available on {date:yyyy-MM}.
            /// </summary>
            public static string AvailableOn(object date) 
                => string.Format(CultureInfo.CurrentCulture, 
                    Strings.GetResourceManager("ThisAssemblyTests.Resources").GetString("WithNamedFormat").Replace("{date:yyyy-MM}", "{0}"), 
                    ((IFormattable)date).ToString("yyyy-MM", CultureInfo.CurrentCulture));
        }
    }
}

Customizing the generated code

The following MSBuild properties can be used to customize the generated code:

Property Description
ThisAssemblyNamespace Sets the namespace of the generated ThisAssembly root class. If not set, it will be in the global namespace.
ThisAssemblyVisibility Sets the visibility modifier of the generated ThisAssembly root class. If not set, it will be internal.

Sponsors

Clarius Org Kirill Osenkov MFB Technologies, Inc. Torutek DRIVE.NET, Inc. Ashley Medway Keith Pickford Thomas Bolon Kori Francis Toni Wenzel Giorgi Dalakishvili Uno Platform Dan Siegel Reuben Swartz Jacob Foshee alternate text is missing from this package README image Eric Johnson Ix Technologies B.V. David JENNI Jonathan Charley Wu Jakob Tikjøb Andersen Seann Alexander Tino Hager Mark Seemann Ken Bonny Simon Cropp agileworks-eu sorahex Zheyu Shen Vezel ChilliCream 4OTC Vincent Limo

Sponsor this project  

Learn more about GitHub Sponsors

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ThisAssembly.Strings:

Package Downloads
ThisAssembly

Meta-package that includes all ThisAssembly.* packages. > This project uses SponsorLink to attribute sponsor status (direct, indirect or implicit). For IDE usage, sponsor status is required. > IDE-only warnings will be emitted after a grace period otherwise. Learn more at https://github.com/devlooped#sponsorlink.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on ThisAssembly.Strings:

Repository Stars
devlooped/ThisAssembly
Exposes project and assembly level information as constants in the ThisAssembly class using source generators powered by Roslyn.
devlooped/nugetizer
A simple to understand packing model for authoring NuGet packages
Version Downloads Last updated
2.0.3 189 9/30/2024
2.0.2 84 9/30/2024
1.4.3 12,648 1/30/2024
1.4.2 139 1/30/2024
1.4.1 3,560 8/30/2023
1.4.0 890 8/11/2023
1.1.3 1,467 1/10/2023
1.1.2 512 1/10/2023
1.1.1 745 1/6/2023
1.1.1-beta 188 1/6/2023
1.1.0 854 12/31/2022
1.0.10 3,997 10/18/2022
1.0.9 20,132 10/21/2021
1.0.8 5,987 4/29/2021
1.0.7 2,685 3/16/2021
1.0.6 1,103 3/9/2021
1.0.5 1,048 1/30/2021
1.0.4 579 1/27/2021
1.0.3 1,567 12/15/2020
1.0.2 713 12/10/2020
1.0.1 683 12/10/2020
1.0.0 2,632 11/21/2020
1.0.0-rc.1 1,442 10/28/2020
1.0.0-rc 768 10/23/2020
1.0.0-beta 1,088 10/15/2020
1.0.0-alpha.3 370 10/8/2020
1.0.0-alpha.2 251 10/8/2020
1.0.0-alpha.1 263 10/8/2020
1.0.0-alpha 1,056 10/3/2020
0.10.6 859 9/22/2020
0.10.5 620 9/21/2020