C# 从UWP访问作为资源嵌入在Net Standard 2.0类库中的StorageFile
从UWP中,我们如何访问作为资源嵌入到.Net标准2类库中的文件?问题返回一个流。如何返回存储文件 该文件位于名为Shared的.Net Standard 2项目中,该项目与UWP项目位于同一解决方案中。该文件位于Shared/Reports中,并设置为“复制到输出”作为EmbeddedResource 我试过了C# 从UWP访问作为资源嵌入在Net Standard 2.0类库中的StorageFile,c#,uwp,.net-standard,.net-standard-2.0,C#,Uwp,.net Standard,.net Standard 2.0,从UWP中,我们如何访问作为资源嵌入到.Net标准2类库中的文件?问题返回一个流。如何返回存储文件 该文件位于名为Shared的.Net Standard 2项目中,该项目与UWP项目位于同一解决方案中。该文件位于Shared/Reports中,并设置为“复制到输出”作为EmbeddedResource 我试过了 Uri resourcePath = new Uri("ms-appx:///Shared/Reports/MyReport"); StorageFile myFile = await
Uri resourcePath = new Uri("ms-appx:///Shared/Reports/MyReport");
StorageFile myFile = await StorageFile.GetFileFromApplicationUriAsync(resourcePath);
及
两者都返回FileNotFoundException
StorageFile.GetFileFromApplicationUriAsync是合适的方法吗?如果是,如何正确格式化URI
是的,但给出的示例A:不起作用,B:使用特定于PDF文件的方法
没关系。我在上述评论中提到的链接只是一个类似的问题。我的目的是告诉您将流保存到StorageFile中。但你似乎不熟悉它
我制作了一个代码示例供您参考
public class Class1
{
/// <summary>
/// This is the method in my .Net Standard library
/// </summary>
/// <returns></returns>
public static Stream GetImage()
{
var assembly = typeof(Class1).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream("ClassLibrary1.Assets.dog.jpg");
return stream;
}
}
///
///此方法用于创建StorageFile并将流保存到其中,然后返回此StorageFile
///
///
私有异步任务GetFile
{
StorageFile StorageFile=Wait ApplicationData.Current.Temporary Folder.CreateFileAsyncTemp.jpg,CreationCollisionOption.ReplaceExisting;
使用var Srcstream=ClassLibrary1.Class1.GetImage
{
使用var targetStream=await storageFile.OpenAsyncFileAccessMode.ReadWrite
{
使用var reader=new DataReaderSrcstream.AsInputStream
{
var outpustream=targetStream.GetOutputStreamAt0;
等待reader.LoadAsyncuintSrcstream.Length;
而reader.unsumedBufferLength>0
{
uint datatoend=reader.unsumedbufferlength>128?128:reader.unsumedbufferlength;
IBuffer buffer=reader.ReadBufferdatatoend;
等待outpustream.WriteAsyncbuffer;
}
等待outpustream.FlushAsync;
}
}
}
返回存储文件;
}
通过访问StorageFile,您想做什么?一般来说,使用文件流可以获得相同的目标。谢谢@Xavier Xie-MSFT,我知道如何将目标作为流检索。但我需要返回一个StorageFile对象。您可以在本地文件夹中创建一个StorageFile并写入它。请检查类似的帖子:再次感谢@Xavier Xie-MSFT。我不理解你提到的例子,我注意到OP也不能让它工作。InMemoryRandomAccessStream如何用于读取嵌入为.Net标准2类库中的资源的文件?InMemoryRandomAccessStream文档来自Windows 8.1。您说过要获取一个StorageFile,但使用您在原始帖子中提到的上述方法,您只能获取流。然后,我告诉过你们试着将流保存到一个存储文件中。谢谢@Xavier Xie-MSFT。这就是我所说的答案。它本身是完整的。非常感谢。嗨,你能提供你的使用说明吗?还有什么.NET框架?这可以在Xamarn.Forms上用于UWP目标.NET标准2.0吗?
public class Class1
{
/// <summary>
/// This is the method in my .Net Standard library
/// </summary>
/// <returns></returns>
public static Stream GetImage()
{
var assembly = typeof(Class1).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream("ClassLibrary1.Assets.dog.jpg");
return stream;
}
}