网站商城html模板,php免费网站空间,青岛 外语网站建设,网页模板下载在线点击上方蓝字关注“汪宇杰博客”在 Visual Studio 中#xff0c;如果我们在一个 .NET Core 工程里加入了一个资源文件#xff08;.resx#xff09;#xff0c;那么你会发现有个对应的 .Designer.cs 文件被自动生成了#xff0c;每次资源文件的内容有变化#xff0c;这个设… 点击上方蓝字关注“汪宇杰博客”在 Visual Studio 中如果我们在一个 .NET Core 工程里加入了一个资源文件.resx那么你会发现有个对应的 .Designer.cs 文件被自动生成了每次资源文件的内容有变化这个设计器文件都会刷新。它本质上就是对应资源文件里的键值对自动生成访问这些资源的方法。生成的代码就像这样private static global::System.Resources.ResourceManager resourceMan;private static global::System.Globalization.CultureInfo resourceCulture;[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(Microsoft.Performance, CA1811:AvoidUncalledPrivateCode)]internal DataResource() {}/// summary/// Returns the cached ResourceManager instance used by this class./// /summary[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp new global::System.Resources.ResourceManager(Moonglade.Setup.Data.DataResource, typeof(DataResource).Assembly); resourceMan temp; } return resourceMan; }}/// summary/// Overrides the current threads CurrentUICulture property for all/// resource lookups using this strongly typed resource class./// /summary[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture value; }}对于资源文件里的每个Key都会有个方法来读它的值/// summary/// Looks up a localized string similar to {quot;Namequot;:quot;Adminquot;,quot;Descriptionquot;:quot;MoongladeAdminquot;,quot;ShortDescriptionquot;:quot;Moonglade Adminquot;,quot;AvatarBase64quot;:quot;quot;}./// /summaryinternal static string BlogOwnerSettings { get { return ResourceManager.GetString(BlogOwnerSettings, resourceCulture); }}但是我不希望使用这些代码来读取资源文件。因此我需要禁用自动生成Desinger.cs文件。事实上这个Designer.cs文件的生产方式是通过CustomTool生成的就像EF4-6时候通过T4模板生成代码一样也是一种CustomTool。给资源文件.resx生成对应的 .Designer.cs 文件的CustomTool叫做ResXFileCodeGenerator在 Visual Studio 中你可以在RESX文件的属性窗口里将它设置为 reset to default 从而关闭这货如果你用的是 Visual Studio Code可以手工编辑csproj文件删除这段ItemGroup Compile UpdateData\DataResource.Designer.cs DesignTimeTrue/DesignTime AutoGenTrue/AutoGen DependentUponDataResource.resx/DependentUpon /Compile/ItemGroupItemGroup EmbeddedResource UpdateData\DataResource.resx GeneratorResXFileCodeGenerator/Generator LastGenOutputDataResource.Designer.cs/LastGenOutput /EmbeddedResource/ItemGroup那么现在我们如何从资源文件里读取字符串呢很简单ResourceManager rm new ResourceManager(Moonglade.Setup.Data.DataResource, Assembly.GetExecutingAssembly());rm.GetString(Your_Resource_Key);