gpt4 book ai didi

c# - 资源嵌入在多个 Satellite Assembly 中

转载 作者:行者123 更新时间:2023-11-30 16:24:03 25 4
gpt4 key购买 nike

我知道有几个关于 satellite Assembly 的问题,但我在尝试实现它们时仍然遇到一些麻烦

My Goal is to separate each culture in a single assembly, giving me the flexibility to only re-compile one assembly at a time when required, I wouldn't like to compile all languages if I only want to make some minor changes to just one language

我想全面了解 satellite Assembly 的工作原理。这是我目前的理解:

  • Satellite Assembly 可以放在 bin 目录中而无需重新编译整个应用程序,这意味着该应用程序不需要这些程序集即可正常工作(只要指定了回退资源)

  • S.A.必须与单一文化相关联

现在我可以使用 al 工具生成 S.A.,或者如果我添加 .resx 文件,Visual Studio 可以为我生成 S.A.,创建 S.A.(在 bin 文件夹中我可以看到文件夹特定文化的结构)

问题1.这些dll是等价的,一个是Visual Studio生成的,另一个是用al工具生成的?

问题 2. 所有这些 dll 是否必须共享一个通用名称才能工作? (我知道它们应该保持一致,但如果它们不共享名称,假设使用指定不同名称的 al 工具创建它们)它们是否仍能被 .Net 框架识别并加载?

问题 3. 如果我想使用 ResourceManager 类,是否必须为每个程序集文化实例化一个实例? (并且由于它们的名称中包含区域性,因此它们具有不同的程序集名称,我是否必须手动格式化要加载的嵌入资源文件以匹配当前区域性并手动加载该程序集?因为它们可能不会第一次加载, 我是否必须通过在 culture 文件夹 中指定文件路径来手动加载它?)

问题 4.这些 S.A. 是由 .Net 框架自动加载的还是我必须显式加载它们?

问题 5。如果我必须加载它们,这意味着如果我想在我的控制标签中以声明方式指定资源,我是否必须创建并注册一个自定义资源工厂才能加载它们?

问题 6. 如果我在 visual studio 中的一个类项目中为多个文化添加多个资源,没有代码,它们会自动嵌入,当我编译时,会创建每个文化的附属程序集,这些dll相关吗?我想知道它们是否通过名称、命名空间或其他东西相关

所有这些问题都基于此:我认为我可以将程序集添加到 bin 文件夹并在 ResourceManager 中指定类似全局程序集的内容,它会自动加载资源,即使它们位于不同的程序集中(这就是为什么我关注程序集名称或多个附属程序集如何相关)就像在单个程序集中定义资源时一样,您只需调用Resources.MyResourceKey 就是这样

非常感谢您的帮助,这个话题快把我逼疯了 =(

最佳答案

我知道 resgenal 工具看起来比它们应该的要复杂一点,但我很确定你的目标是可以实现的,即你可以构建您在 Visual Studio 解决方案之外的附属程序集(这样您就不必在解决方案中维护所有已翻译的资源)但得到完全相同的结果。

问题 1:是

问题2:是的,ResourceManager依赖命名约定加载本地化资源

问题 3:不可以。您可以使用标准的 ResourceManager。事实上,您根本不必直接使用 ResourceManager。在您的解决方案中包含您的基础资源,并使用 Build Action = Embedded Resource 和 Custom Tool = PublicResXFileCodeGenerator 配置它,然后 Visual Studio 将自动生成并维护一个类(与您的 resx 文件同名),该类允许您通过静态属性访问资源.根据 Thread.CurrentThread.CurrentUICulture 和部署的附属程序集,这些属性将为您提供来自附属程序集或基础程序集的本地化资源。

问题 4:不会。ResourceManager 会自动完成。

问题 5:请参阅问题 4。无事可做。

问题 6:请参阅问题 2。它基于命名约定(文件夹根据文化命名,卫星程序集根据基本 dll 命名)和元数据(例如,使用 al 编译时使用的文化名称)

关于c# - 资源嵌入在多个 Satellite Assembly 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11097205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com