app.manifest 和 assemblyInfo.cs 版本号,是否需要 app.manifest?
app.manifest and assemblyInfo.cs version numbers and is app.manifest needed?
我一直在阅读有关 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 应用商店使用..验证?应用程序。 (当然,由于受支持的 os 版本和执行级别,请检查应用程序是否可以 运行)但我说的是 assemblyIdentity,我不太明白。
应用程序清单是一个纯粹的非托管实现细节。 C# 编译器确保它作为非托管资源嵌入到最终的可执行文件中。使用“文件”>“打开”>“文件”并选择 EXE 文件时可以看到的内容。
它必须是非托管的,因为操作系统会读取它。只是在可执行文件格式中可以存储的额外配置。一种很难改变的格式,太多现有的程序会被可执行文件弄得瘫痪。
您不应该遗漏 AssemblyIdentity
元素,SDK 文档要求有效清单始终包含一个。它不会以其他方式在 .NET 程序中使用,因为它仅在查找非托管 DLL 时发挥作用。所以内容实际上并不重要,您可以使用项目模板生成的样板文件。
操作系统不知道有关 .NET 属性的 bean,只有 CLR 可以读取它们。你列出的那些实际上被 C# 编译器使用,再次创建一个 unmanaged 资源。它是 VERSION 资源,您在查看 EXE 文件时也会看到它。它填写的是Details属性sheet的详细信息,就是你用Explorer看文件属性的时候看到的。该资源也是 .NET FileVersionInfo class 使用的资源。超级重要的 [AssemblyVersion] 属性不可见,很不方便。
应用商店应用中的 appx 清单是一个完全不同的问题。同样是一个非托管的细节,操作系统使用它来确定如何将商店应用程序包部署到用户的机器上。以及瓷砖的外观。它需要什么功能,对沙箱很重要。
我一直在阅读有关 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 应用商店使用..验证?应用程序。 (当然,由于受支持的 os 版本和执行级别,请检查应用程序是否可以 运行)但我说的是 assemblyIdentity,我不太明白。
应用程序清单是一个纯粹的非托管实现细节。 C# 编译器确保它作为非托管资源嵌入到最终的可执行文件中。使用“文件”>“打开”>“文件”并选择 EXE 文件时可以看到的内容。
它必须是非托管的,因为操作系统会读取它。只是在可执行文件格式中可以存储的额外配置。一种很难改变的格式,太多现有的程序会被可执行文件弄得瘫痪。
您不应该遗漏 AssemblyIdentity
元素,SDK 文档要求有效清单始终包含一个。它不会以其他方式在 .NET 程序中使用,因为它仅在查找非托管 DLL 时发挥作用。所以内容实际上并不重要,您可以使用项目模板生成的样板文件。
操作系统不知道有关 .NET 属性的 bean,只有 CLR 可以读取它们。你列出的那些实际上被 C# 编译器使用,再次创建一个 unmanaged 资源。它是 VERSION 资源,您在查看 EXE 文件时也会看到它。它填写的是Details属性sheet的详细信息,就是你用Explorer看文件属性的时候看到的。该资源也是 .NET FileVersionInfo class 使用的资源。超级重要的 [AssemblyVersion] 属性不可见,很不方便。
应用商店应用中的 appx 清单是一个完全不同的问题。同样是一个非托管的细节,操作系统使用它来确定如何将商店应用程序包部署到用户的机器上。以及瓷砖的外观。它需要什么功能,对沙箱很重要。