怎么做 Satellite assemblies

本文详细介绍如何利用Satellite Assemblies(SA)实现C#项目的多语言本地化,包括创建资源文件、生成不同语言的资源、制作Satellite Assemblies及部署步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍怎么使用SA(Satellite assemblies) 做Localization。

基本介绍:

http://codeguru.earthweb.com/csharp/.net/net_general/tipstricks/article.php/c11367/

 

Culture Codes:

http://sharpertutorials.com/list-of-culture-codes/

 

1: 创建C# Assembly:

  命名为:MyAssembly;

2: 添加Resources.resx;

  这里有两种方法:

    (1) 使用工程属性里面的Resources Tab,生成默认的Resources.resx文件。

    (2)使用Add NEw Item添加Resources File.

  这样生成的Resources就有一个默认的Resources.Designer.cs文件。这里面有一个很重要的字符串,一定要注意这个字符串,这个字符串是我们后面创建所创建的SA能够被系统自动加载的关键。

 

        /// <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("MyAssembly.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }

 

3:准备Localization 文件。

  (1)给刚才生成的资源文件添加 String 资源,key 为: “String1” 和“String2”;

  (2)调用VS的Command工具,切换到Resources.resx所在目录下,执行以下命令:

      resgen Resources.resx Resources.en-US.txt

    这样就使用默认的Resources生成了你所需要被翻译人员所使用的一个txt 文件。重复生成多种语言的txt文档。改Txt内容如下:

      String1=resource.default
      String2=resource default string 2

4:生成以Resources为后缀的资源文件:

  当翻译人员翻译好Txt后,使用如下VS的Command工具,调用以下命令:

      resgen Resources.en-US.txt MyAssembly.Properties.Resources.en-US.resources;

  这里生成resources文件时的那个红色的字符串一定要和前文创建ResourceManager时的字符串一致。

5:生成SA:

  调用下面命令:

  al /t:lib /embed:MyAssembly.Properties.Resources.en-US.resources /out:MyAssembly.resources.dll /c:en-US

  这样就生成了用于SA的 resources dll文件。

6:部署:

  在MyAssembly.dll所在目录下创建文件夹 en-US.把生成的MyAssembly.resources.dll放在里面。

  每个不用的语言对应不同的文件夹。

 

好了,做完上面的步骤,就完成了一个SA的制作,自己试试看吧。

  改变运行环境的语言:

   string cultureInfo = “en-US";

   Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cultureInfo);

      

转载于:https://www.cnblogs.com/livenn/archive/2011/01/14/1935809.html

### 解决 .NET 程序集中程序集找不到的问题 当遇到 .NET 应用程序中的程序集无法找到的情况时,这通常意味着应用程序试图加载不存在或路径配置错误的程序集。为了有效解决问题,可以从以下几个方面入手: 1. **确认依赖项的存在** 需要确保所有必需的程序集都存在于预期的位置。对于基于特定名称和服务资源的应用来说,如果这些组件被硬编码或者通过某种机制暴露给外部访问,则可能存在安全风险以及部署复杂度增加的风险[^1]。 2. **检查项目文件配置** 如果正在使用较新的开发环境如.NET 5.0及以上版本的目标框架,在项目的XML配置文件中应该采用更新后的语法来指定目标框架。任何不符合新标准的设置可能会导致编译器未能正确解析所需的库文件[^2]。 3. **验证Web服务器集成细节** 对于托管在Internet信息服务(IIS)上的应用而言,理解其内部工作原理有助于排查问题所在。例如,在不同版本之间(比如IIS 5对比IIS 6),请求是如何由`aspnet_isapi.dll`传递至ASP.NET运行时的过程存在显著差异;因此了解具体环境中使用的IIS版本及其特性非常重要[^3]。 4. **审查数据绑定表达式的准确性** 错误的数据源字段名可能导致查找失败。“ConfirmStatus.Name”的属性未发现提示可能是因为拼写错误或者是对象模型结构发生了改变而代码没有同步更新所致[^4]。 针对上述每一点进行全面细致地核查能够帮助定位并修复“.NET assemblies not found”这一类常见但棘手的技术难题。 ```csharp // 示例:确保引用正确的命名空间和程序集 using CorrectNamespace; public class ExampleClass { public void Method() { var instance = new CorrectAssembly.ClassName(); // 使用完全限定名实例化对象 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值