日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

.NET Core 如何禁止.resx文件自动生成Designer.cs

發(fā)布時(shí)間:2023/12/4 asp.net 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 如何禁止.resx文件自动生成Designer.cs 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方藍(lán)字關(guān)注“汪宇杰博客”

在 Visual Studio 中,如果我們?cè)谝粋€(gè) .NET Core 工程里加入了一個(gè)資源文件(.resx),那么你會(huì)發(fā)現(xiàn)有個(gè)對(duì)應(yīng)的 .Designer.cs 文件被自動(dòng)生成了,每次資源文件的內(nèi)容有變化,這個(gè)設(shè)計(jì)器文件都會(huì)刷新。它本質(zhì)上就是對(duì)應(yīng)資源文件里的鍵值對(duì),自動(dòng)生成訪問(wèn)這些資源的方法。

生成的代碼就像這樣:

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 thread's 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;

? ? }

}

對(duì)于資源文件里的每個(gè)Key,都會(huì)有個(gè)方法來(lái)讀它的值

/// <summary>

///? ?Looks up a localized string similar to {&quot;Name&quot;:&quot;Admin&quot;,&quot;Description&quot;:&quot;Moonglade

Admin&quot;,&quot;ShortDescription&quot;:&quot;Moonglade Admin&quot;,&quot;AvatarBase64&quot;:&quot;&quot;}.

/// </summary>

internal static string BlogOwnerSettings {

? ? get {

? ? ? ? return ResourceManager.GetString("BlogOwnerSettings", resourceCulture);

? ? }

}

但是,我不希望使用這些代碼來(lái)讀取資源文件。因此我需要禁用自動(dòng)生成Desinger.cs文件。

事實(shí)上,這個(gè)Designer.cs文件的生產(chǎn)方式是通過(guò)CustomTool生成的,就像EF4-6時(shí)候通過(guò)T4模板生成代碼一樣,也是一種CustomTool。給資源文件(.resx)生成對(duì)應(yīng)的 .Designer.cs 文件的CustomTool叫做ResXFileCodeGenerator

Visual Studio 中,你可以在RESX文件的屬性窗口里將它設(shè)置為 <reset to default> 從而關(guān)閉這貨

如果你用的是 Visual Studio Code,可以手工編輯csproj文件,刪除這段:

<ItemGroup>

? <Compile Update="Data\DataResource.Designer.cs">

? ? <DesignTime>True</DesignTime>

? ? <AutoGen>True</AutoGen>

? ? <DependentUpon>DataResource.resx</DependentUpon>

? </Compile>

</ItemGroup>


<ItemGroup>

? <EmbeddedResource Update="Data\DataResource.resx">

? ? <Generator>ResXFileCodeGenerator</Generator>

? ? <LastGenOutput>DataResource.Designer.cs</LastGenOutput>

? </EmbeddedResource>

</ItemGroup>

那么現(xiàn)在,我們?nèi)绾螐馁Y源文件里讀取字符串呢?很簡(jiǎn)單:

ResourceManager rm = new ResourceManager("Moonglade.Setup.Data.DataResource", Assembly.GetExecutingAssembly());

rm.GetString("Your_Resource_Key");

總結(jié)

以上是生活随笔為你收集整理的.NET Core 如何禁止.resx文件自动生成Designer.cs的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。