Log*_*acy 7 .net c# localization visual-studio-2012
在VS2012中使用C#.NET与COM互操作,我正在开发一个公共库,用于其他几个程序.为了保持集成简单,我想将整个库保留为一个DLL.该库的一个功能是本地化.它有多种语言的字符串表,每种语言都有自己的ResX文件.
目前,MyLibrary.resources.dll正在为每种语言创建一个并放置在它自己的子目录中,如下所示:
Release\MyLibrary.dll
Release\ja\MyLibrary.resources.dll
Release\fr\MyLibrary.resources.dll
Run Code Online (Sandbox Code Playgroud)
我想看到的只是这个:
Release\MyLibrary.dll
Run Code Online (Sandbox Code Playgroud)
这是我目前的ResX设置.

我已经尝试使用ResXFileCodeGenerator和GlobalResourceProxyGenerator"自定义工具"生成器.我还尝试了一些"Build Action"选项,包括Compile,但到目前为止只有Embedded Resource有效.除此之外,我不知道还有什么可以尝试,或者我是否在正确的轨道上.实际上没有那么多设置可供使用.
我知道在构建DLL之后有很多工具可以做到这一点,但我正在寻找一个编译时解决方案.从维护的角度来看,第三方工具具有挑战性 - 我不会是唯一更新此库的人.
将库嵌入到单个 DLL 或可执行文件中的主要方法有两种。第一个使用ILMerge,将所有程序集组合起来,就像它是一个程序集一样;第二种是在运行时从嵌入式资源动态加载依赖项(提供更多的灵活性,但有其自身的优点和缺点)。示例项目旨在可移植(唯一的依赖项是 Powershell——所有必需的库都包含在项目中)。
了解这两种技术之间的区别很重要。我写过文章概述了这两种方法,并在 github 上提供了这两种方法的示例项目。
文章:
和
示例项目:
如果您对这两种方法有任何疑问,请随时与我们联系。我很乐意根据您的反馈来完善帖子。