更改Resources.resx属性后命名空间路径损坏

时间:2019-10-16 21:52:04

标签: vb.net visual-studio

我的VB.Net VSTO上有一个运行时System.Resources.MissingManifestResourceException。我读到这很可能是由于我的资源文件中的设置错误。因此,我进入了属性,并确保将Build Action设置为Embedded Resource(确实如此)。

就在下面,我看到Copy to Output Directory被设置为Do not copy。我以为只要将其更改为Copy always并尝试进行编译就不会有伤害。

它没有解决任何问题,但是现在Build Action已更改为Content,并且我遇到了数十个BC30456错误:

  

“资源”不是“ WordAddIn.My”的成员

出现错误时,我最终遇到了UserControl设计器,出现错误的行显示:Me.Button_Foo.Image = Global.WordAddIn.My.Resources.Resources.Resource_Bar

我确实将资源文件设置恢复为原来的状态(Embedded ResourceDo not copy),但是错误仍然存​​在。

注意:Resources.Designer的命名空间为My.Resources,而Resources类及其成员为Friend。但是,Intellisense不允许我从发生构建错误的任何对象访问名称空间。我尝试更改其他名称的“自定义工具命名空间”,但它不会出现在项目中的任何位置。 (自定义工具确实会更新Resources.Designer.vb文件,我会说它做得正确)


更新

Resources.Designer.vb不包括在项目中,而是显示在“杂项文件”中。与该帖子相同的症状:Visual Studio - project shows up as "Miscellaneous Files"

我确实(1)从项目中排除了Resources.resx(不能单独在Resources.Designer.vb上使用),(2)清理了解决方案,(3)重新启动了Visual Studio,(4)清理了解决方案(zust'in'kase),(5)然后重新包含它,现在的问题是项目中包含Resources.Designer.vb,但没有Resources.resx被“嵌入”,所以我怕我会摔坏吗?

1 个答案:

答案 0 :(得分:0)

Visual Studio 2017的修复程序如下:

  1. 注意自定义工具名称空间:在解决方案资源管理器中,右键单击Resources.resx文件->“属性”,并记住“自定义工具命名空间”字段的值。 (步骤6需要)
  2. 从项目中删除Resources.resxResources.Designer.vb文件:在解决方案资源管理器中,对于每个文件,右键单击->“从项目中排除”
  3. 清洁/重建解决方案
  4. 重新启动Visual Studio
  5. 重新添加Resources.resx文件,但添加Resources.Designer.vb:在解决方案资源管理器中,确保已启用[显示所有文件]按钮(在[刷新附近) ]);资源文件应显示在其旁边,带有灰色的文件夹/文件符号;右键单击->“包含在项目中”(或者,右键单击“我的项目”节点,然后选择“添加” /“现有项目”。
  6. 在解决方案资源管理器中,右键单击Resources.resx->“属性”:确保“自定义工具”的值为“ PublicVbMyResourcesResXFileCodeGenerator”;并且“自定义工具命名空间”对应于您从项目中删除文件之前的值(请参见步骤1。)。
  7. 在解决方案资源管理器中,右键单击Resources.resx->“运行自定义工具”
  8. 应该自动生成一个新的设计器文件。