本主题介绍如何通过设置项目的My条件编译常量来控制启用哪些_MYTYPE对象。 Visual Studio 集成开发环境(IDE)使 _MYTYPE 项目的条件编译常量与项目的类型保持同步。
预定义的 _MYTYPE 值
必须使用 /define 编译器选项设置 _MYTYPE 条件编译常量。 为 _MYTYPE 常量指定自己的值时,必须将字符串值括在反斜杠/引号 (\“) 序列中。 例如,可以使用:
/define:_MYTYPE=\"WindowsForms\"
此表显示了多个项目类型设置的_MYTYPE条件编译常量。
| 项目类型 | _MYTYPE 值 |
|---|---|
| 类库 | “Windows” |
| 控制台应用程序 | “Console” |
| 网络 | 网络 |
| Web 控件库 | “WebControl” |
| Windows 应用程序 | “WindowsForms” |
Windows 应用程序(从自定义 Sub Main 开始时) |
“WindowsFormsWithCustomSubMain” |
| Windows 控件库 | “Windows” |
| Windows 服务 | “Console” |
| 空 | “空” |
注释
不管 Option Compare 语句如何设置,所有条件编译字符串比较均区分大小写。
从属 _MY 编译常量
条件编译常量 _MYTYPE 反过来控制若干其他编译常量 _MY 的值:
| _MYTYPE | _MYAPPLICATIONTYPE | _MYCOMPUTERTYPE | _MYFORMS | _MYUSERTYPE | _MYWEBSERVICES |
|---|---|---|---|---|---|
| “Console” | “Console” | “Windows” | 未定义 | “Windows” | 真 |
| “Custom” | 未定义 | 未定义 | 未定义 | 未定义 | 未定义 |
| “空” | 未定义 | 未定义 | 未定义 | 未定义 | 未定义 |
| 网络 | 未定义 | 网络 | 假 | 网络 | 假 |
| “WebControl” | 未定义 | 网络 | 假 | 网络 | 真 |
| “Windows”或“” | “Windows” | “Windows” | 未定义 | “Windows” | 真 |
| “WindowsForms” | “WindowsForms” | “Windows” | 真 | “Windows” | 真 |
| “WindowsFormsWithCustomSubMain” | “Console” | “Windows” | 真 | “Windows” | 真 |
默认情况下,未定义的条件编译常量解析为 FALSE。 编译项目以替代默认行为时,可以为未定义的常量指定值。
注释
当设置为“Custom”时 _MYTYPE ,项目包含 My 命名空间,但它不包含任何对象。 但是,设置为 _MYTYPE “Empty”可防止编译器添加 My 命名空间及其对象。
下表描述了编译常量预定义值 _MY 的影响。
| 恒定 | 含义 |
|---|---|
_MYAPPLICATIONTYPE |
如果常量为“控制台”、“Windows”或“WindowsForms”,则启用 My.Application:- “控制台”版本派生自 ConsoleApplicationBase。 成员数少于“Windows”版本。 - “Windows”版本派生自 ApplicationBase.,成员数少于“WindowsForms”版本。 - “WindowsForms”版本的 My.Application派生自WindowsFormsApplicationBase。
TARGET如果常量定义为“winexe”,则类包括一个Sub Main方法。 |
_MYCOMPUTERTYPE |
如果常量为“Web”或“Windows”,则启用 My.Computer:- “Web”版本派生自 ServerComputer,成员数少于“Windows”版本。 - My.Computer 的“Windows”版本派生自 Computer。 |
_MYFORMS |
如果常量为 My.Forms,则启用 TRUE。 |
_MYUSERTYPE |
如果常量为“Web”或“Windows”,则启用 My.User:- “Web”版本 My.User 与当前 HTTP 请求的用户标识相关联。- My.User 的“Windows”版本与线程的当前主体相关联。 |
_MYWEBSERVICES |
如果常量为 My.WebServices,则启用 TRUE。 |
_MYTYPE |
启用 My.Log、My.Request 和 My.Response,如果常量为“Web”。 |