在插件库项目中通过Visual Studio管理本地化资源

时间:2014-12-28 20:18:01

标签: c# visual-studio localization

我试图最终能够使用"插件"包含卫星资源。组件,用C#开发并作为DLL分发。它运行在" Host"平台,对我如何构建和分发有一些限制。

我正在使用Visual Studio,并想了解如何利用标准本地化功能:我的表单的组件特定资源以及其他插件范围的资源。请承担一些解释:

Visual Studio方面以这种方式设置:平台提供VS项目,该项目是其所有插件的主机项目。我在VS中使用这个项目来开发我的插件。主机还有一个嵌入式代码编辑器和其他开发工具。插件C#代码驻留在主机源文件夹中。

分发插件需要主机编译;然后使用Host工具将我的插件文件导出为DLL。主机针对所有其他默认插件编译插件源,然后进行代码混淆,生成用于执行的存根文件,以及清单类型文件。这些都捆绑在一个Zip文件中,并且是插件的分发程序集。当用户安装插件时,这实际上全部解压缩到用户的主机文件夹中。

File Setup

我正在尝试使用本地化功能:我不能简单地在VS中本地化我的表单,因为资源嵌入到VS构建输出中,而VS构建输出没有与Host Plugin捆绑在一起;我不能在发行时加入。此外,主机不允许我在我的构建进行分发时选择resx文件(可能已经解决了;但是主机中的"导出插件"对话框只允许选择你的C#文件想捆绑成可分发的插件)。

我知道将资源捆绑到DLL中的能力;如果可能的话,我相信这将是我的首选解决方案;然后也许我可以使用IDE功能,然后选择我的所有资源文件并生成带有资源的附属程序集。但我无法弄清楚如何引用资源。这将导致卫星资源DLL放在MyPlugin.dll(或文化子文件夹)旁边,如上图所示。 Host平台允许在插件中包含依赖DLL;如图所示,它们将与MyPlugin.dll一起解压缩。

我试过简单地运行AL,并生成带有资源的附属程序集;并将该文件放在Host文件夹中;以及文化子文件夹。但是,资源加载失败:它找不到资源。

我也试过添加: [assembly:NeutralResourcesLanguage(" en-US",UltimateResourceFallbackLocation.Satellite)] 在我的插件源文件中;这没有帮助。

任何人都可以想出足够的建议吗?它可能是名称空间问题;我不太了解代码。如果我必须改变资源的加载方式,我也会这样做;但我对资源的管理方式了解不够,不知道从哪里开始。

即使给出了有关资源和文件的内幕消息的解释,我也可能会想到一些东西:但我只是在看IDE功能,希望能够使用它们并找出如何成功捆绑并包含资源以及插件DLL。我不太了解引擎盖下的内容。

1 个答案:

答案 0 :(得分:0)

...我只是通过自己手动加载资源来解决这个问题......在这里解释:

Building Resource-Only DLL (With al.exe) Is Raising "assembly is built by a runtime newer than the currently loaded runtime"