有没有办法解析应用程序清单?

时间:2010-08-24 00:01:19

标签: c# clickonce manifest

我正在寻找一种方法让托管网站解析出[appname] .manifest文件,以提取应用程序名称,版本和图标(如果有)。通过这种方式,我可以将其放入控件中以便于部署。是否有任何框架调用可以帮助我解析清单文件?

我要找的文件是[appname] .application和/或[appname] .manifest

2 个答案:

答案 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找到图标。