Vin*_*ent 2 c# manifest assemblyinfo
我已经在 app.manifest 上做了很多阅读,但我不明白。好吧,我确实知道您在某些方面需要它,例如:<requestedExecutionLevel level="asInvoker" uiAccess="false" />我们确实需要和使用它。但也有这样的:
<assemblyIdentity
name="ModuleSimulator"
processorArchitecture="*"
version="1.0.2.1"
type="win32"/>
Run Code Online (Sandbox Code Playgroud)
我没有得到的部分来了,我可以不考虑任何后果,对吗?我们已经有一个 AssemblyInfo.cs,其中包含所有程序集详细信息,其中包括版本:
[assembly: AssemblyVersion("1.0.2.2")]
[assembly: AssemblyFileVersion("1.0.2.2")]
[assembly: AssemblyInformationalVersion("R165Fv001r02")]
[assembly: NeutralResourcesLanguageAttribute("en")]
Run Code Online (Sandbox Code Playgroud)
我们的目标是 Windows 7(目前),但我们将来也可能会开始支持 Windows 10。那么,如果 AssemblyInfo.cs 确保以正确的方式编译程序集,那么清单文件中的 assemblyIdentity 有什么用。
我确实意识到以前有人问过这个问题,但我似乎不明白。
我想我明白的是:windows 应用商店也使用 app.manifest .. 验证?应用程序。(当然,检查应用程序是否可以运行,因为支持的操作系统版本和执行级别)但我说的是 assemblyIdentity,我不太明白。
应用程序清单是一个纯粹的非托管实现细节。C# 编译器确保它作为非托管资源嵌入到最终的可执行文件中。使用“文件”>“打开”>“文件”并选择 EXE 文件时可以看到的内容。
它必须是非托管的,因为操作系统会读取它。只是除了可以存储在可执行文件格式中的内容之外的附加配置。一种难以改变的格式,太多现有的与可执行文件混在一起的程序会被它瘫痪。
您不应该遗漏该AssemblyIdentity元素,SDK 文档要求有效清单始终包含一个。它不会在 .NET 程序中使用,因为它只在查找非托管 DLL 中起作用。所以内容实际上并不重要,您可以使用项目模板生成的样板。
操作系统不知道有关 .NET 属性的 bean,只有 CLR 可以读取它们。您列出的那些确实被 C# 编译器使用,再次创建非托管资源。它是 VERSION 资源,当您查看 EXE 文件时也会看到它。它填写详细信息属性表的详细信息,即您在使用资源管理器查看文件属性时看到的详细信息。该资源也是 .NET FileVersionInfo 类使用的资源。超级重要的 [AssemblyVersion] 属性不可见,相当不便。
Store 应用程序中的 appx 清单是一个完全不同的鱼缸。同样是非托管细节,操作系统使用它来确定如何将商店应用程序包部署到用户的机器上。以及瓷砖的样子。它需要什么功能,这对沙箱很重要。