在应用程序的 Visual Studio 项目属性中,有一个选项可以“创建没有清单的应用程序”。通过ClickOnce部署应用程序时,此选项是必需的,但我不明白此选项的作用,到目前为止我的研究如下...
在禁用该选项并重新编译时,我注意到列出程序集内容的 .NET 程序集清单仍然完好无损并且没有更改。在比较二进制文件时(在Beyond Compare中使用十六进制比较模式),我注意到这个块已从 EXE 图像的末尾删除:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
我相信这是一个 Windows 可执行应用程序清单,如 MSDN(应用程序清单)中所述:
应用程序清单是一个 XML 文件,它描述和标识应用程序在运行时应绑定到的共享和私有并行程序集。
奇怪的是,上述 XML 中的应用程序名称和版本似乎具有默认值(MyApp,版本 1.0.0.0),而构建此二进制文件的 Visual Studio 项目定义了正确的名称和版本号,所以看起来对我来说,所有 .NET 二进制文件(或 EXE 文件)都嵌入了相同的默认 WindowsEXE 清单。是这样吗?我应该在某处设置这些名称和版本值吗?