【发布时间】:2012-06-21 06:29:13
【问题描述】:
我知道有几个关于卫星组装的问题,但我在尝试实施它们时仍然遇到一些麻烦
我的目标是在单个程序集中分离每种文化,让我可以灵活地在需要时一次只重新编译一个程序集,如果我只想进行一些小的更改,我不想编译所有语言只用一种语言
我想全面了解卫星大会的工作原理。这是我目前的理解:
可以将卫星程序集放在 bin 目录中,而无需重新编译整个应用程序,这意味着应用程序不需要这些程序集即可正常工作(只要指定了备用资源)
S.A.必须与单一文化相关联
现在我可以使用al 工具生成 SA,如果我添加 .resx 文件,Visual Studio 可以为我生成 SA,SA 已创建(在 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 就可以了它
感谢你的帮助,这个话题快把我逼疯了=(
【问题讨论】:
标签: c# asp.net localization embedded-resource satellite-assembly