PAYATHON 2026

Visual Basic 项目在 VS 2022 中找不到应用程序清单怎么办?

数据阿明

找不到 Application Manifest File 模板时,生成 Windows 桌面可执行文件的 Visual Basic 项目仍然可以使用应用程序清单。可以先从项目属性打开清单;如果没有相应入口,也可以手动创建 app.manifest,再配置项目在构建时使用它。要让整个应用请求管理员权限,需要将 requestedExecutionLevel 的 level 设为 requireAdministrator。Microsoft 的管理员权限说明

为什么搜索不到模板?

“添加新项”显示的是当前项目可用的模板。搜索无结果,只说明对话框中没有找到匹配项,无法据此判断磁盘上是否已有清单,也不能认定 Visual Studio 安装损坏。

由于没有项目类型和目标框架的信息,暂时无法确定模板缺失的具体原因。可以先清除模板筛选条件,搜索 manifest;使用中文界面时,也可以搜索“清单”。同时确认右键单击的是要生成 .exe 的项目。

先从 Visual Basic 项目属性查找清单

对于使用传统项目设计器的 Visual Basic 项目,尤其是 .NET Framework 项目,可以按以下顺序检查:

  1. 右键单击项目,打开“属性”(Properties),或打开 My Project。
  2. 进入“应用程序”(Application)页。
  3. 查找“查看 Windows 设置”(View Windows Settings)或 UAC 设置相关按钮。
  4. 如果打开了 app.manifest,直接修改该文件,无需再添加同名清单。

Microsoft 的 Visual Basic 编译器文档也介绍了从 Application 页查看或编辑默认清单的方法。不同项目系统的界面可能不同;如果没有这个按钮,可以手动添加清单。Visual Basic 清单配置说明

没有模板时,手动添加 app.manifest

以下方式适用于普通 Windows 桌面可执行项目。如果项目已有清单,应保留其中的兼容性、DPI 等设置,只修改权限配置。

1. 创建清单文件

通过“添加 > 新建项”添加文本文件,命名为 app.manifest,放在 .vbproj 所在目录。确认文件没有被保存成 app.manifest.txt。

下面的基础清单用于演示权限配置。ExampleApp 是示例标识,请按项目实际情况调整:

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    name="ExampleApp" />
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

这些 XML 命名空间和元素的大小写需要保持准确。Windows 应用程序清单结构

2. 让项目使用这个文件

打开项目的 .vbproj,在根元素 <Project> 内的一个无条件 <PropertyGroup> 中设置:

<PropertyGroup>
  <ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>

这是要加入项目文件的片段,不要用它替换整个 .vbproj。如果已经存在 ApplicationManifest,修改原有值即可。如果文件位于 My Project 目录,路径应改为:

<ApplicationManifest>My Project\app.manifest</ApplicationManifest>

ApplicationManifest 用于指定构建所用的清单路径。仅将文件添加到项目或复制到输出目录,不能代替这项配置。MSBuild 项目属性说明

3. 重新生成并检查启动行为

保存修改并重新生成项目,然后从普通权限的文件资源管理器启动新生成的 .exe。

在启用 UAC 且启动进程尚未获得管理员权限的常见环境中,requireAdministrator 会要求管理员授权。管理员账户通常看到同意提示,标准用户通常需要输入管理员凭据。已经提权的启动环境和系统策略可能影响提示行为,因此不能保证每次启动都会弹窗。UAC 与执行级别说明

还有哪些情况需要注意?

  • 如果现有清单使用 level="asInvoker",将它改为 level="requireAdministrator" 即可,不要重复添加 requestedExecutionLevel。
  • 如果当前项目是类库,应配置实际启动的可执行程序;类库不能靠自己的清单让宿主进程提权。
  • 如果通过 ClickOnce 发布,需要单独处理部署限制。ClickOnce 不支持应用通过 requireAdministrator 或 highestAvailable 请求提权。ClickOnce 与 UAC 的限制

如果这些入口都不可用,需要确认具体项目类型、目标框架以及 .vbproj 中已有的清单相关配置,才能进一步判断模板为何没有出现。

备注:内容仅供参考。