基本上以下代碼將整個文件夾從應用程序安裝複製到LocalCacheFolder中,以便它們可以被操縱/更新。在這種情況下,該文件夾的內容,稱爲「數據」僅在零售模式下失敗的Xbox One CopyAsync
此代碼的移動,桌面上和在Xbox的開發模式很好,但是這條線在零售模式在Xbox失敗:
await file.CopyAsync(destinationFolder, file.Name, NameCollisionOption.FailIfExists);
這是也在全新安裝,所以我知道文件(S)不存在。
在零售模式中是否有不同的方式來實現這一點,雖然理論上所有的UWP代碼都應該跨設備工作。
private async Task setupdatabase()
{
StorageFolder destinationContainer = Windows.Storage.ApplicationData.Current.LocalCacheFolder;
string root = Windows.ApplicationModel.Package.Current.InstalledLocation.Path;
string path = root + @"\Data";
StorageFolder sfolder = await StorageFolder.GetFolderFromPathAsync(path);
await CopyFolderAsync(sfolder, destinationContainer);
}
public static async Task CopyFolderAsync(StorageFolder source, StorageFolder destinationContainer, string desiredName = null)
{
StorageFolder destinationFolder = null;
destinationFolder = await destinationContainer.CreateFolderAsync(desiredName ?? source.Name, CreationCollisionOption.OpenIfExists);
foreach (var file in await source.GetFilesAsync())
{
await file.CopyAsync(destinationFolder, file.Name, NameCollisionOption.FailIfExists);
}
foreach (var folder in await source.GetFoldersAsync())
{
await CopyFolderAsync(folder, destinationFolder);
}
}
失敗如何?它會拋出一個異常,或者是什麼? –
這就是問題所在,因爲它只在零售模式下失敗,所以沒有辦法連接調試器來查看發生了什麼。我必須進行編輯,提交給商店,等待認證,安裝在零售包裝箱上,並再次完成耗時的過程。我在屏幕上放置了一個文本框,並在每條命令後更新了它的值,以便我知道它不再工作的位置,並嘗試使用try {catch(Exception e){}塊捕獲任何異常,但它只是跳過catch中的代碼 –