0

私はVisual Studio(Windows Phone 8.1用のモノゲーム付き)で開発しています。 「デバッグなしで実行する」というアプリを起動すると非常に高速に起動しますが、デバッグでは非常に遅くなります(約5分、ビルド時間はカウントされません)。私が見ている問題(外部シンボルの読み込みが遅い)は、多くのグラフィックファイルがロードされていますが、画像を読み込む前にhdバージョンとhdおよびローカライズされたバージョンを検索し、ローカライズされています。ほとんどのファイルはhdバージョンを持たず、一部はローカライズされ、一部はローカライズされていません。したがって、ログには多くのメッセージが表示されます。Visual Studio 2013でのデバッグはFileNotFoundExceptionのため非常に遅い

もちろん、デバッグなしで起動すると、すべてのデバッグ情報が機能しなくなり、アプリケーションが高速に起動します。 ファイルがContentフォルダにあるかどうかを確認する唯一の方法は、ファイルを開く(TitleContainer.OpenStream)、例外をキャッチしようとしています。だから私はそれらの例外を生成することを避けることはできません。私はどのようにこの愚かな遅いFileNotFoundExceptionの処理を無効にするデバッグの起動をスピードアップすることができますか?私は再帰的にファイル名をプリロードし、その後STRINGLISTで検索することで問題を解決し、迷惑な例外処理と私の場合は

答えて

0

private static List<string> mContentFilenames = new List<string>(); 


    private static void preloadContentFilenamesRecursive(StorageFolder sf) 
    { 
     var files = sf.GetFilesAsync().AsTask().ConfigureAwait(false).GetAwaiter().GetResult(); 
     if (files != null) 
     { 
      foreach (var f in files) 
      { 
       mContentFilenames.Add(f.Path.Replace('\\','/')); 
      } 
     } 
     var folders = sf.GetFoldersAsync().AsTask().ConfigureAwait(false).GetAwaiter().GetResult(); 
     if (folders != null) 
     { 
      foreach (var f in folders) 
      { 
       preloadContentFilenamesRecursive(f); 
      } 
     } 

    } 

    private static void preloadContentFilenames() 
    { 
     if (mContentFilenames.Count > 0) 
      return; 
     var installed_loc = Windows.ApplicationModel.Package.Current.InstalledLocation; 
     var content_folder = installed_loc.GetFolderAsync("Content").AsTask().ConfigureAwait(false).GetAwaiter().GetResult(); 
     if (content_folder != null) 
      preloadContentFilenamesRecursive(content_folder); 
    } 

    private static bool searchContentFilename(string name) 
    { 
     var v = from val in mContentFilenames where val.EndsWith(name.Replace('\\', '/')) select val; 
     return v.Any(); 
    } 

更新

しかし、デバッガがある場合にのみ、このコードを使用します添付の。私はマイクロソフトの労働者を過小評価しました。彼らはあなたのデバッグを地獄にしてうれしいです。彼らの不規則なエラー処理とisFileExist関数の欠如は、ファイルを再帰的にisFileExistを自分で例外なく実装するようにしますが、 - surprize - デバッガが添付されていない場合、このコードは何も例外なくwhitoutを終了させます。また、アプリケーションがクラッシュする前に、ファイルの乱数をチェックするので、問題は特定の方法ではなく、「多くのファイルを確認できません」、つまりいくつあるのかは時々刻々と異なります。

実際のWP8.1デバイス上に(小または大)アプリケーションを起動するケースの50%でVSがクラッシュし、デバイスファイルシステムへのアクセスがないという事実を考慮して、クラッシュの根。私はそれのためにほぼ一日を過ごしました!

Btwは、Windows、Windowsストア、Windows Phoneアプリで20年以上働いていて、私は実際に目を見るためにmsftから誰かに会いたいと思っています。それが何であるかを知るには - 愚かさやサディズム?彼らは本当に私たちの開発者を憎んでいますか?どうして?

関連する問題