【问题标题】:Is it possible to tell Visual Studio not to treat a source file as a "component"? [duplicate]是否可以告诉 Visual Studio 不要将源文件视为“组件”? [复制]
【发布时间】:2011-01-09 11:14:56
【问题描述】:

可能重复:
Is there an attribute I can add to a class so it will be edited as code, not in the designer?

在其继承路径上带有 System.ComponentModel.Component 的类在 Visual Studio (2008) 中被自动视为“组件”,从而触发源文件的不同图标:

虽然图标并不重要,但更改后的双击行为确实很烦人:Visual Studio 现在没有在文本编辑器中打开源代码,而是显示一个屏幕,鼓励我通过将组件“从工具箱”。我不想那样做!

我知道我可以右键单击源文件并选择“查看代码”,但是每当我忘记执行此操作时,我就会一直等待一个完全没用的对话框。有什么办法可以禁用组件的行为(最好在源码中)?

【问题讨论】:

  • 如果您一直在等待对话框,您的计算机对于开发人员机器来说太慢了:) 如果您选择为表单或控件添加部分类文件,也会发生同样的事情。虽然它基本上是一个单独的纯代码文件,但它会打开一个设计器(如果我没记错的话,它不是实际表单的那个)。烦人,但我倾向于在没有纯代码符号的文件上右键单击->查看代码。
  • 呵呵,现在打开对话框好像要花很多时间,但更像是我的大脑需要几个时钟周期才能找出问题所在:)
  • 另外,有问题的项目不是 winforms,所以我真的觉得VS用它讨厌的设计师来烦我是不公平的。

标签: c# visual-studio components


【解决方案1】:

你不能使用DesignerCategory 属性来装饰你的类吗?

当你用这个属性装饰你的类时,当你双击它时,文件应该在“代码视图”中打开:

[System.ComponentModel.DesignerCategory("Code")]
public class MyComponent
{
}

【讨论】:

  • 没错!不过,您必须为此属性使用完全限定名称确实很奇怪:)
  • 未来的读者请仔细注意@JørnSchou-Rode 的评论。似乎只有当您使用属性的完全限定名称时这才有效。
  • 具有讽刺意味的是,Visual Studio 允许在描述同一类的不同部分文件上设置不同的属性并采取相应的行动,但编译后认为这是一个错误。
  • 最后在 Visual Studio 2017 中你可以只使用 [DesignerCategory("Code")]
【解决方案2】:

您可以右键单击源文件,选择“查看代码”,然后单击“设置为默认值”。这是一个有点生硬的工具,但如果您的解决方案中的虚假组件比真实组件多,那么您可能会发现它很方便。

【讨论】:

    【解决方案3】:

    正如 OregonGhost 在他的评论中已经提到的那样,如果您从表单制作部分类文件,也会发生这种情况。

    问题更严重。如果您查看您的项目文件,您会发现每个文件的条目包括如下:

    <Compile Include="FormMain.cs">
      <SubType>Form</SubType>
    </Compile>
    

    所以解决方案应该是删除&lt;SubType&gt;...&lt;/SubType&gt; 行,因为它似乎是所有问题的根源。但是如果你删除这行,保存文件,在 Visual Studio 中打开它,再次保存并再次查看,该行会重新出现!

    Visual Studio 中似乎只有一个硬编码异常,即 *.Designer.cs。所以没有办法解决这个问题。

    【讨论】:

    • 近十年后,不幸的是,这似乎仍然正确。我只能在其中一个部分类上设置 DesignerAttribute,一旦我错误地在其他类之一上按 ,子类型 Form 就会重新出现在该部分文件的项目文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2021-10-27
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多