自定义 My 中可用的对象 (Visual Basic)

本主题介绍如何通过设置项目的 _MYTYPE 条件编译常量,来控制要启用的 My 对象。 Visual Studio 集成开发环境 (IDE) 为与项目类型同步的项目保留 _MYTYPE 条件编译常量。

预定义的 _MYTYPE 值

必须使用 /define 编译器选项来设置 _MYTYPE 条件编译常量。 为 _MYTYPE 常量指定自己的值时,必须将字符串值用反斜杠/引号(\")序列括起来。 例如,可以使用:

/define:_MYTYPE=\"WindowsForms\"  

下表显示了为几个项目类型设置的 _MYTYPE 条件编译常量。

项目类型 _MYTYPE 值
类库 “Windows”
控制台应用程序 “Console”
Web “Web”
Web 控件库 “WebControl”
Windows 应用程序 “WindowsForms”
Windows 应用程序(从自定义 Sub Main 开始时) “WindowsFormsWithCustomSubMain”
Windows 控件库 “Windows”
Windows 服务 “Console”
“Empty”

注意

不管 Option Compare 语句如何设置,所有条件编译字符串比较均区分大小写。

从属 _MY 编译常量

相反,_MYTYPE 条件编译常量控制多个其他 _MY 编译常量的值:

_MYTYPE _MYAPPLICATIONTYPE _MYCOMPUTERTYPE _MYFORMS _MYUSERTYPE _MYWEBSERVICES
“Console” “Console” “Windows” 未定义 “Windows” true
“Custom” 未定义 Undefined Undefined Undefined 未定义
“Empty” 未定义 Undefined Undefined Undefined 未定义
“Web” 未定义 “Web” false “Web” false
“WebControl” 未定义 “Web” false “Web” true
“Windows”或“” “Windows” “Windows” 未定义 “Windows” true
“WindowsForms” “WindowsForms” “Windows” true “Windows” true
“WindowsFormsWithCustomSubMain” “Console” “Windows” true “Windows” true

默认情况下,未定义的条件编译常量解析为 FALSE。 在编译项目以覆盖默认行为时,可以为未定义的常量指定值。

注意

如果 _MYTYPE 设置为“Custom”,则项目包含 My 命名空间,但不包含任何对象。 但是,将 _MYTYPE 设置为“Empty”将阻止编译器添加 My 命名空间及其对象。

下表描述了 _MY 编译常量的预定义值的效果。

返回的常量 含义
_MYAPPLICATIONTYPE 如果常量为“Console”、“Windows”或“WindowsForms”,则启用 My.Application

-“Console”版本派生自 ConsoleApplicationBase。 其成员比“Windows”版本少。
-“Windows”版本派生自 ApplicationBase。其成员比“WindowsForms”版本少。
- My.Application 的“WindowsForms”版本派生自 WindowsFormsApplicationBase。 如果 TARGET 常量定义为“winexe”,则类包含 Sub Main 方法。
_MYCOMPUTERTYPE 如果常量为“Web”或“Windows”,则启用 My.Computer

-“Web”版本派生自 ServerComputer,其成员比“Windows”版本少。
- My.Computer 的“Windows”版本派生自 Computer
_MYFORMS 如果常量为 TRUE,则启用 My.Forms
_MYUSERTYPE 如果常量为“Web”或“Windows”,则启用 My.User

- My.User 的“Web”版本与当前 HTTP 请求的用户标识相关联。
- My.User 的“Windows”版本与线程的当前主体相关联。
_MYWEBSERVICES 如果常量为 TRUE,则启用 My.WebServices
_MYTYPE 如果常量为“Web”,则启用 My.LogMy.RequestMy.Response

请参阅