【问题标题】:app.manifest and assemblyInfo.cs version numbers and is app.manifest needed?app.manifest 和 assemblyInfo.cs 版本号,是否需要 app.manifest?
【发布时间】:2016-09-08 12:28:29
【问题描述】:

我一直在阅读有关 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 确保程序集以正确的方式编译,那么 manifest 文件中的 assemblyIdentity 有什么用。

我确实意识到以前有人问过这个问题,但我似乎不明白。

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

【问题讨论】:

    标签: c# manifest assemblyinfo


    【解决方案1】:

    应用程序清单是一个纯粹的非托管实现细节。 C# 编译器确保它作为非托管资源嵌入到最终的可执行文件中。使用 File > Open > File 并选择 EXE 文件时可以看到的内容。

    它必须是非托管的,因为操作系统会读取它。除了可以以可执行文件格式存储的内容之外的其他配置。一种很难改变的格式,太多现有的程序会用可执行文件来蒙混过关。

    您不应该遗漏AssemblyIdentity 元素,SDK 文档要求有效的清单始终有一个。它不会在 .NET 程序中使用,因为它只在查找非托管 DLL 中发挥作用。所以内容实际上并不重要,您可以使用项目模板生成的样板。

    操作系统不知道 .NET 属性的 bean,只有 CLR 可以读取它们。您列出的那些确实被 C# 编译器使用,再次创建 unmanaged 资源。它是 VERSION 资源,您在查看 EXE 文件时也会看到它。它填写详细属性表的详细信息,即您在使用资源管理器查看文件属性时看到的详细信息。该资源也是 .NET FileVersionInfo 类使用的资源。超级重要的 [AssemblyVersion] 属性不可见,很不方便。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2021-07-11
      • 2010-11-01
      • 2019-04-29
      • 1970-01-01
      相关资源
      最近更新 更多