如何将资源类与.resx资源设计器类合并为同一树状结构?
解决TFS项目中.resx文件与设计器类分离的问题
我之前从TFS拉取老项目时也碰到过一模一样的情况,不用删文件,跟着下面的步骤操作就能把它们恢复成嵌套的树状层级:
方法一:Visual Studio界面操作(推荐,适合多数场景)
- 先确保项目处于显示所有文件状态(点击解决方案资源管理器顶部的「显示所有文件」按钮即可切换)。
- 找到分离的
.resx文件和对应的设计器类(比如Resources.resx与Resources.Designer.cs)。 - 若设计器类不在项目中,选中它右键点击**「包含在项目中」**;已经在项目里的话跳过这步。
- 右键点击设计器类,选择**「属性」**。
- 在属性窗口中,确认**「生成操作」为
Embedded Resource;找到「依赖项」**(部分版本叫「父文件」),下拉选择对应的.resx文件。 - 保存项目并刷新解决方案资源管理器,就能看到设计器类嵌套到
.resx文件下方了。
方法二:手动编辑.csproj项目文件(适合界面操作无效的情况)
要是界面操作没生效,大概率是项目文件里的关联配置出了问题,直接修改更稳妥:
- 右键点击项目,选择**「卸载项目」**。
- 再次右键点击卸载后的项目,选择**「编辑.csproj」**。
- 在打开的XML文件里,找到对应设计器类的
<Compile>节点,比如:<Compile Include="Resources.Designer.cs" /> - 将其修改为嵌套在对应
.resx的<EmbeddedResource>节点下,用<DependentUpon>标签关联,修改后示例如下:<EmbeddedResource Include="Resources.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.cs</LastGenOutput> </EmbeddedResource> <Compile Include="Resources.Designer.cs"> <DependentUpon>Resources.resx</DependentUpon> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> </Compile> - 保存
.csproj文件,右键点击项目选择**「重新加载项目」**,刷新后就能看到嵌套结构了。
额外提醒:记得确认.resx文件的「自定义工具」属性是ResXFileCodeGenerator,这样设计器类会自动和.resx保持关联,后续就不会再出现分离的情况。
内容的提问来源于stack exchange,提问作者David Lerma Developer
相关产品推荐
相关产品推荐

