我很好奇我是否需要在发布应用程序时创建的两个清单文件.它删除它时有效.在需要它们的情况下,我尝试嵌入(Project> Application> Embed manifest with default setting),但它们仍然是外部的.
那些是:(appname).exe.manifest和(appname).application.
Jer*_*Gee 16
清单文件描述了应用程序的运行方式.来自MSDN:
每个程序集(无论是静态的还是动态的)都包含一组数据,这些数据描述了程序集中的元素如何相互关联.程序集清单包含此程序集元数据.程序集清单包含指定程序集的版本要求和安全标识所需的所有元数据,以及定义程序集范围和解析对资源和类的引用所需的所有元数据.程序集清单可以存储在带有Microsoft中间语言(MSIL)代码的PE文件(.exe或.dll)中,也可以存储在仅包含程序集清单信息的独立PE文件中.
因此,删除它们可能是错误的,特别是如果您希望应用程序默认在Vista及更高版本上运行.
以下是MSDN使用mt工具的详细信息,该工具用于在应用程序中嵌入清单.
还要注意一个非常有趣的问题,关于在Vista及其他版本中缓存清单看起来像一个真正的问题.
另外,当使用VS2003时,如果你想让你的控件看起来更像XP界面,那么清单将包含带有适当版本6.x的公共控件,它与你的应用程序一起使用,然后GUI得到一个"很好的更新外观和XP的感觉"而不是旧的笨重的Windows 2000控件.出于这个原因,您可以将清单嵌入为资源,这样您就不必使用清单文件(好吧,它是一个非常小的文件)但是,它使应用程序分发更加整洁.
此外,.NET 1.1运行时中存在一个错误(现已修复为2.0+),如果在您的应用程序中使用清单,则无法更新GUI以使其具有更多XP外观.当时的解决方法是在执行Application.Run(new form())之前调用Application.DoEvents ;
现在,使用Vista和Win 7,清单用于指定提升权限以绕过UAC,从而最大限度地减少Vista/Win 7必须弹出UAC对话框的机会.