2012-08-09 92 views
19

我创建了一个类,它在一个全新的项目中扩展了DbConnectionVS2010在设计器模式下打开我的类文件(.cs)

public class FakeDbConnection : DbConnection { ... } 

在Solution Explorer中的类看起来是这样的:enter image description here

当双击它希望在设计模式,将无法正常工作打开它。开放的.csproj文件揭示了问题

<ItemGroup> 
    <Compile Include="FakeADO\FakeDbConnection.cs"> 
    <SubType>Component</SubType> 
    </Compile> 
</ItemGroup> 

即使我删除SubType标签VS2010立即重新添加它。很烦人。

如何阻止VS2010在设计器模式下打开我的.cs文件并将其作为常规代码文件打开?

+0

删除文件并重新添加,并记住此时更改类型 – Ankit 2012-08-09 09:53:53

+0

尝试过,VS2010在打开项目后重新添加类型。 – vidstige 2012-08-09 10:56:48

回答

39

正如在回答中描述this question你可以这样做:

[System.ComponentModel.DesignerCategory("Code")] 
class FakeDbConnection: DbConnection { ... } 

重要:属性必须fully qualified否则VS2010会忽略这一点。

重要(感谢jmbpiano):该属性仅适用于文件中的第一个类。

+0

有趣的...它不适用于我:-(我使用VS2010,并尝试一个只继承组件的类,也尝试了继承TabControl的类。 ..没有这样的运气......也许它不适用于Express版本,虽然我觉得这不太可能! – series0ne 2012-08-10 08:15:10

+0

嗯,奇怪。你是否手动删除.csproj文件中标记的子标记? – vidstige 2012-08-10 08:40:02

+3

发现问题,您需要*完全*限定属性,否则将无法工作。 – vidstige 2012-08-10 08:44:12

0

那是因为DBConnection继承了“组件”。 关于禁用VS添加“子类型”在csproj文件 - 我不认为这是可能的。

,您仍然可以aceess代码,通过右键单击在设计师 - >显示的代码(我认为“F7”是该快捷键)

+0

欢迎来到计算器!感谢你的回答。我已经知道了,但没有提出这个问题。似乎有些麻烦。但是,如果这是我唯一的方法,那么我想它是一种解决方法。 – vidstige 2012-08-09 11:02:23

1

继承层次结构表明,这个类(DbConnection)继承自System.ComponentModel.Component。尝试右键单击该文件并查看源代码。

一如既往,你可以检查MSDN! HereDbConnection的文档。

+0

谢谢,我已经知道这一点,但它非常繁琐。打开文件不应该那么复杂。 – vidstige 2012-08-09 10:57:10

+1

@vidstige它并不完全复杂,只是不如双击。查看Visual Studio设置和选项。您可能能够找到类似“默认情况下在源视图中打开组件派生项”的选项。我知道你的意思,但它令人讨厌的是,组件在设计器中打开时并不是所有组件都必须是可设计的。 – series0ne 2012-08-09 11:54:46

+0

他搜索的人会发现 - 看我的答案:) – vidstige 2012-08-10 07:56:22

相关问题