app.manifest和assemblyInfo.cs版本号和app.manifest需要

本文关键字:app manifest 需要 版本号 assemblyInfo cs | 更新日期: 2023-09-27 18:06:07

我已经在app.manifest上做了很多阅读,但我不明白。我知道你需要它来做一些事情,比如:我们确实需要和使用<requestedExecutionLevel level="asInvoker" uiAccess="false" />。但是还有这个:

<assemblyIdentity
  name="ModuleSimulator"
  processorArchitecture="*"
  version="1.0.2.1"
  type="win32"/>

这里是我不明白的部分,我可以把它省略而不会有任何后果,对吗?我们已经有了一个AssemblyInfo.cs,它包含了所有程序集的详细信息,其中包括版本:

[assembly: AssemblyVersion("1.0.2.2")]
[assembly: AssemblyFileVersion("1.0.2.2")]
[assembly: AssemblyInformationalVersion("R165Fv001r02")]
[assembly: NeutralResourcesLanguageAttribute("en")]

我们主要针对windows 7(目前),但我们可能会在未来开始支持windows 10。那么,如果AssemblyInfo.cs确保程序集以正确的方式编译,那么清单文件中的assemblyIdentity有什么用呢?

我知道以前有人问过这个问题,但我似乎就是不明白。

我想我明白的是:app.manifest也被windows应用商店使用。验证? ?应用程序。(当然检查应用程序是否可以运行,因为支持的操作系统版本和执行级别),但我说的是assemblyIdentity,我不太明白。

app.manifest和assemblyInfo.cs版本号和app.manifest需要

应用程序清单是一个纯粹的非托管的实现细节。c#编译器确保它作为非托管资源嵌入到最终的可执行文件中。当你使用文件>打开>文件并选择EXE文件时,你可以看到的东西。

必须是非托管的,因为操作系统正在读取它。只是可以存储在可执行文件格式之外的额外配置。这是一种很难改变的格式,太多现有的与可执行文件打交道的程序会因此而瘫痪。

您不应该遗漏AssemblyIdentity元素,SDK文档要求有效的清单总是有一个。它不会在。net程序中使用,因为它只在查找非托管dll中起作用。因此,内容实际上并不重要,您可以使用项目模板生成的样板文件。

操作系统对。net属性一无所知,只有CLR可以读取它们。您所列出的那些实际上会被c#编译器使用,再次用于创建一个非托管资源。它是VERSION资源,您在查看EXE文件时也会看到它。它填充details属性表的详细信息,即使用Explorer查看文件属性时看到的详细信息。该资源也是. net FileVersionInfo类所使用的。超级重要的[AssemblyVersion]属性不可见,非常不方便。

商店应用中的appx清单是完全不同的。这又是一个未管理的细节,操作系统使用它来确定如何将商店应用程序包部署到用户的机器上。以及瓷砖的样子。它需要什么功能,对沙盒来说很重要。