我正在寻找一种方法让托管网站解析出[appname] .manifest文件,以提取应用程序名称,版本和图标(如果有)。通过这种方式,我可以将其放入控件中以便于部署。是否有任何框架调用可以帮助我解析清单文件?
我要找的文件是[appname] .application和/或[appname] .manifest
答案 0 :(得分:0)
System.Diagnostics.FileVersionInfo将为您完成大部分繁重的工作。它将从文件中提取元数据,以确定程序集的产品名称和数据。版。至于Icon,这是一个不同的故事,但至少这是一个开始:
更新
同样使用System.Reflection.Assembly,您可以致电GetManifestResourceInfo(string)
,GetManifestResourceNames()
和GetManifestResourceStream(string)
来访问程序集的资源(对于图标)。
答案 1 :(得分:0)
您可以使用System.Deployment.Application.InPlaceHostingManager
类获取所需信息的 - 不要被名称所迷惑,它主要用于浏览器托管的ClickOnce应用,但也适用对于独立的ClickOnce应用程序。初始化实例并将URL传递给.application文件后,您可以调用GetManifestAsync()
- 在GetManifestCompleted
的事件处理程序中,您可以获取应用程序名称和版本:
void iphm_GetManifestCompleted(object sender, GetManifestCompletedEventArgs e) {
Console.WriteLine("Application name: {0}", e.ApplicationIdentity);
Console.WriteLine("Application version: {0}", e.Version);
}
图标通常在应用程序清单中引用(.application是部署清单) - 可以使用InPlaceHostingManager
访问应用程序清单;在上面的示例中,您将获得e.ApplicationManifest
的值,该值可以为您提供XmlReader
。
可能最好研究相关的XML模式,然后使用XQuery找到图标。