【问题标题】:Visual Studio WPF generating identical conflicting partial class filesVisual Studio WPF 生成相同的冲突部分类文件
【发布时间】: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


【解决方案1】:

简短回答:在 Visual Studio 中重命名文件时要非常小心。

我重命名了一些文件和类,但没有捕获对它们的所有引用。我的控件指向的类的名称与它们自己的代码隐藏文件不同,并且类的名称与它们所在的文件不同。难怪 Visual Studio 会感到困惑。

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2015-10-25
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    相关资源
    最近更新 更多