【发布时间】:2017-01-28 01:21:14
【问题描述】:
我在 WPF 项目中有自定义用户控件。我的解决方案将不再编译。当我尝试在清理/重建之后构建/包含(即使在删除 bin 和 obj 文件夹之后)VS 生成两个代码文件:control.g.vb 和 control.g.i.vb
这些文件中的代码包含连接到代码隐藏类的部分类,并且两个生成的文件是相同的。然后,Visual Studio 确定它们相互冲突,导致编译错误,例如“Public Sub InitializeComponent() 具有多个具有相同签名的定义”,一个在 control.g.vb 中,一个在 control.g.i.vb 中
发生了什么,它是如何发生的,我该如何解决?
我在 google、SO 和 MSDN 上搜索了所有我能想到的相关关键字。我发现最相关的建议涉及删除 bin 和 obj 文件并进行清理和重建,我已经尝试过。
示例错误 错误“Public Sub System_Windows_Markup_IComponentConnector_Connect(connectionId As Integer, target As Object)”有多个具有相同签名的定义。 {解决方案文件路径}\obj\x86\Debug\Controls\用户控件{文件夹}{控件}.g.i.vb {项目}
【问题讨论】:
-
总是会生成这些文件。如果我打赌,我会说您更改了一个或两个用户控件的命名空间,但您没有正确执行。如果您这样做了,我建议将这些控件的 XAML 和 cs 文件复制到您的解决方案之外的位置,在您希望它们存在的位置创建新版本,然后从每个原始文件中复制最低限度进入他们的新版本。这意味着只复制类定义(没有命名空间!),以及除 XAML 中的根元素之外的所有内容。只添加那些需要的属性
-
让它编译。如果这不起作用,请创建一个新的解决方案,复制您的一个用户控件,然后在仍然重现问题的同时编辑所有内容。将其配对为最小示例后,将其发布到 edit。
-
据我所知,我根本没有接触过命名空间。我没有尝试将它们移动到新位置或其他任何地方。此外,我只能控制此解决方案中一个项目的一小部分。如果我尝试检查更多内容以进行编辑,则会给项目中的其他开发人员带来问题。
-
很遗憾,这里没有足够的信息来回答。确切的错误消息(请不要截屏!)会有所帮助。代码会有所帮助(这就是我建议重新制作和配对的原因)。
-
我会进行复制和缩减。同时,请参阅编辑以获取我遇到的实际错误的示例,如果我可以提供更多有用的信息,请告诉我。
标签: wpf vb.net visual-studio-2012 user-controls code-behind