C# 从UWP访问作为资源嵌入在Net Standard 2.0类库中的StorageFile

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

从UWP中,我们如何访问作为资源嵌入到.Net标准2类库中的文件?问题返回一个流。如何返回存储文件

该文件位于名为Shared的.Net Standard 2项目中,该项目与UWP项目位于同一解决方案中。该文件位于Shared/Reports中,并设置为“复制到输出”作为EmbeddedResource

我试过了

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;
    }
}