在.Net Framework程序中,我们经常以如下方式读取程序集中的资源文件:
Assembly readAssembly = Assembly.GetExecutingAssembly();
StreamReader streamReader = new
StreamReader(readAssembly.GetManifestResourceStream("Test.txt"));
但是,在WinRT中,这种方式失效了,如果要在WinRT中读取资源文件需要用到如下方式:
-
将资源文件的生成方式设置为"内容(Content)"
-
通过Windows.ApplicationModel.Package.Current.InstalledLocation属性获取根文件夹
-
根据相对路径获取资源文件
为了简化操作,我写了一个函数方便使用:
public
static
async
Task<StorageFile> GetPackagedFileAsync(string fileName)
{
StorageFolder installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
return
await installFolder.GetFileAsync(fileName);
}
这种方式读取WinRT类库的资源文件也可以使用,不过WinRT类库的资源文件在InstalledLocation下多了一个以其程序集命名的文件夹(如果没有设置前面的第一步操作时看不到),调试的时候可以通过installFolder.GetFoldersAsync()函数查看。