C# 删除程序集中的默认语言并将其移动到附属程序集中

C# 删除程序集中的默认语言并将其移动到附属程序集中,c#,.net,internationalization,compilation,satellite-assembly,C#,.net,Internationalization,Compilation,Satellite Assembly,我有一个主要用C#编写的.Net 3.5应用程序,它使用.resx文件存储几种不同语言的国际化数据,包括字符串、控件大小和位置,等等。我想弄明白的是:有可能编译我的应用程序,使默认区域性数据以与其他区域性数据几乎相同的方式拉入附属程序集 我试图防止出现这样的情况:用户使用一种(非默认)语言的软件,删除bin目录中的区域性文件夹,然后访问默认语言 如果由于框架的限制,这是不切实际或不可能的,那么是否可以使用默认的以外的语言进行编译,以便我可以向用户提供应用程序的单个非默认版本 非常感谢您的回答。几

我有一个主要用C#编写的.Net 3.5应用程序,它使用.resx文件存储几种不同语言的国际化数据,包括字符串、控件大小和位置,等等。我想弄明白的是:有可能编译我的应用程序,使默认区域性数据以与其他区域性数据几乎相同的方式拉入附属程序集

我试图防止出现这样的情况:用户使用一种(非默认)语言的软件,删除bin目录中的区域性文件夹,然后访问默认语言

如果由于框架的限制,这是不切实际或不可能的,那么是否可以使用默认的以外的语言进行编译,以便我可以向用户提供应用程序的单个非默认版本


非常感谢您的回答。

几天前我做了类似的事情,因为我需要所有应用程序的程序集才能访问相同的资源。您只需要创建一个包含资源的单独程序集,并从应用程序的程序集引用它。请注意,如果这样做,资源程序集将不会是附属程序集:它将从其他程序集显式引用,如果不存在,应用程序将根本不会启动


还请注意,默认情况下,VisualStudio生成的资源类是内部的。要将它们公开,您需要将自定义工具
ResxFileCodeGenerator
替换为
publicsxfilecodegenerator

几天前我做了类似的事情,因为我需要所有应用程序的程序集都可以访问相同的资源。您只需要创建一个包含资源的单独程序集,并从应用程序的程序集引用它。请注意,如果这样做,资源程序集将不会是附属程序集:它将从其他程序集显式引用,如果不存在,应用程序将根本不会启动


还请注意,默认情况下,VisualStudio生成的资源类是内部的。要将它们公开,您需要将自定义工具
ResxFileCodeGenerator
替换为
publicsxfilecodegenerator

,如果本地化不可用,您希望看到什么行为?如果本地化不可用,我希望应用程序显示占位符值,可能是变量名。看起来我必须将应用程序中所有朝外的值更改为占位符值,然后在运行时使用这些占位符作为所需资源文件中实际值的键。如果本地化不可用,您会期望什么行为?如果本地化不可用,我希望应用程序显示占位符值,可能是变量名。看起来我必须将应用程序中所有朝外的值更改为占位符值,然后在运行时将这些占位符用作所需资源文件中实际值的键。