簡體   English   中英

如何訪問 .NET Standard 2.0 DLL 中的文件?

[英]How to access a file in .NET Standard 2.0 DLL?

謝謝你的拜訪。

這是我面臨的問題,希望得到一些幫助。

我正在嘗試訪問 .NET 標准 DLL 中的文件。 如果我在測試 UWP 應用程序中使用 Windows.Storage 命名空間,則一切正常,如下所示:

Windows.Storage.StorageFile f = await StorageApplicationPermissions.FutureAccessList.GetFileAsync("TestPickedFileToken1");
        txt.Text = await Windows.Storage.FileIO.ReadTextAsync(f);

真正的應用程序是訪問 .NETStandard 2.0 DLL 的 MVVM UWP 應用程序(針對 Fall Creators Update)。 問題是我找不到包含要添加到我的 DLL 的 Windows.Storage 命名空間的程序集。 它在 UWP 中可用,當我嘗試在 System.IO 中使用以下內容時,它使我可以訪問 DLL 中的路徑被拒絕錯誤:

string s = File.ReadAllText(filename);

我需要從 DLL 讀取/寫入文件。 如果我在 UWP 應用程序的 ViewModel 中讀/寫,它將起作用,但我不想這樣做。 是否可以在我的 DLL 中添加對 Windows.Storage 的引用,或者是否有訪問 DLL 中文件的替代方法?

在此先感謝您的幫助!

更新

此帖子中的信息已過時。 請參考這里的例子

原答案

不幸的是,如果沒有StorageFile API,您將無法訪問任何文件路徑。 當用戶使用FilePicker授予您對文件的訪問權限並且您以StorageFile形式獲得引用時,您仍然無法直接使用System.IO類訪問同一路徑。

同時,您不能在 .NET Standard 庫中使用StorageFile API。 但是,您可以做的是從StorageFile獲取System.IO.Stream ,然后您可以在 .NET Standard 庫中使用它:

var readStream = await file.OpenStreamForReadAsync();
var writeStream = await file.OpenStreamForWriteAsync();

要訪問此擴展方法,請確保using System.IO;添加using System.IO; 到源代碼文件的頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM