背景
C#工程中有些对话框等多语言的资源,想移动到其他的工程中,如果只是通过菜单add Existed Item...导入相关的资源文件,并不能关联多语言的资源,自己重新创建多语言资源,工作量很大。网上找了很多资料,没看到相关的文章,MSDN也没找到。只能自己研究手动移植,经过半天的努力,终于成功了,分享出来,以飨C#工程师。
迁移方法
(1)找到要迁移的资源文件
以一个Form为例,class FormSelectChannel: From,我们支持3种语言,如何添加多语言支持,请参考其他msdn或者其他文章。这里假定是在可视化设计中,窗口的属性中将Localizable设置为true,然后在Language属性中选择某种语言,从而生成语言资源文件。假设我们Default语言是英文,还有简体中文和越南语,则3个资源文件分别是:FormSelectChannel.resx,FormSelectChannel.vi-VN.resx,FormSelectChannel.zh-CN.resx
还有两个代码文件:FormSelectChannel.cs和FormSelectChannel.Designer.cs
(2)修改代码文件的名称空间,以适合新的工程
(3)手动修改新的工程文件,添加进这5个文件和依赖关系
假设新工程文件为CommUI.csproj,用文本编辑器打开,这是个xml文件。
(3.1) 在代码文件的<ItemGroup>标签中,加入两个代码文件名,如下:
<ItemGroup> <Compile Include="FormSelectChannel.cs"> <SubType>Form</SubType> </Compile> <Compile Include="FormSelectChannel.Designer.cs"> <DependentUpon>FormSelectChannel.cs</DependentUpon> </Compile>
......
</ItemGroup>
(3.2) 在资源文件的<ItemGroup>标签中,加入3个资源文件:
<ItemGroup> <EmbeddedResource Include="FormSelectChannel.resx"> <DependentUpon>FormSelectChannel.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="FormSelectChannel.vi-VN.resx"> <DependentUpon>FormSelectChannel.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="FormSelectChannel.zh-CN.resx"> <DependentUpon>FormSelectChannel.cs</DependentUpon> </EmbeddedResource>
......
</ItemGroup>
编辑完,保存CommUI.csproj文件即可。