如何在同一解决方案的C#与VB.NET项目间共享*.resx文件?
跨语言(C#/VB.NET)共享Resx文件的正确处理方式
你的临时方案是可行的
你在C#项目里把链接的resx访问修饰符设为internal并生成designer.cs的做法完全没问题——核心原因很简单:VB.NET的designer.vb是VB语法的代码文件,C#项目根本没法编译VB代码,所以必须生成C#自己的设计器文件,这是跨语言共享resx的必经之路。
更规范的跨语言共享流程
- 主resx文件放在VB.NET项目中,保持访问修饰符为
public,让它生成public的designer.vb,供其他VB.NET项目直接链接resx+designer.vb使用,这部分你已经做对了。 - 对于C#项目:
- 只链接主项目的
Shared.resx文件,不要尝试链接VB的designer.vb。 - 在C#项目中选中这个链接的resx文件,打开属性面板:
- 确保“自定义工具”设置为
ResXFileCodeGenerator(这是VS自动生成设计器文件的默认工具)。 - 根据需求设置“访问修饰符”:如果C#项目只内部使用资源,设
internal完全合理;如果需要给解决方案里的其他C#项目共享,就改成public。
- 确保“自定义工具”设置为
- 保存设置后,VS会自动生成C#版本的
designer.cs文件,后续主resx的修改会同步更新C#项目的设计器文件。
- 只链接主项目的
关键注意事项
- 永远不要手动修改自动生成的
designer.vb或designer.cs,每次resx内容更新时,VS会重新覆盖这些文件。 - 所有链接的resx文件,“复制到输出目录”建议设为“不复制”,避免多个项目重复输出相同资源文件导致冲突。
- 如果有本地化资源文件(比如
Shared.zh-CN.resx),同样只链接resx文件到C#项目,VS会自动处理本地化逻辑。
内容的提问来源于stack exchange,提问作者chriscode
相关产品推荐
相关产品推荐

