アプリケーションが開始されると、テキストファイルの更新チェックが実行されます。リモート ファイルのバージョン番号がローカルのバージョン番号よりも大きい場合、リモート ファイルは分離ストレージに保存され、現在のファイルと置き換えられます。残念ながら、期待どおりには機能しません。ストレージにはまだ古いファイルがあります。
public static bool WriteFileToIsolatedStorage(String content, String fileName)
{
bool result = false;
MessageBox.Show(Leser.GetVersionInfo(content));
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream(fileName, FileMode.Truncate, store));
try
{
writer.Write(content);
writer.Flush();
writer.Close();
result = true;
}
catch
{
result = false;
}
return result;
}
「Create」や「Truncate」などのいくつかの FileMode パラメータを試しましたが、アプリケーションを再起動すると、常に更新が利用可能になります。ストレージへの書き込み中にエラーは発生しませんが、バージョン番号は正しく動作しなかったことを示しています。
プロジェクト エクスプローラーに、上記のように更新する必要があるデータを含むテキスト ファイルがあります。最初にこのファイルのストレージを確認し、見つからない場合はそこに書き込みます。これは期待どおりに機能します。しかし、更新されたバージョンは書かれておらず、その理由がわかりません。
解決策: 書き込みは正常に機能します :) 問題は、IsolatedStorage に保存されたファイルではなく、リソース ファイルを読み取ったことです。
public static String ReadFileContents(String file)
{
String content = String.Empty;
var ResourceStream = Application.GetResourceStream(new Uri(file, UriKind.Relative));
if (ResourceStream != null)
{
Stream myFileStream = ResourceStream.Stream;
if (myFileStream.CanRead)
{
StreamReader myStreamReader = new StreamReader(myFileStream);
content = myStreamReader.ReadToEnd();
}
}
return content;
}
ごめんなさい!