アプリケーション(UWP、C#/ xaml)は、Visual Studioを介して展開した場合、または電話にappxをサイドロードした場合、リリースモードで正常に動作します。
しかし、ストアからダウンロードして実行すると、次の例外でクラッシュします
System.IO.FileLoadException:ファイルまたはアセンブリを読み込めませんでした 'System.Threading、Version = 4.0.10.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つ。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)
また、同じアプリは、VSを介したサイドローディング/ロードでクラッシュすることなく、またはストアからダウンロードした場合でも、PC上で実行されます。どんな助けでもいただければ幸いです。
編集:コードスニペット>プライベート静的辞書lockDictionary = new Dictionary();
private static SemaphoreSlim getLockElement(string fileName)
{
if (lockDictionary.ContainsKey(fileName))
return lockDictionary[fileName];
else
{
SemaphoreSlim objectToReturn = new SemaphoreSlim(1);
lockDictionary.Add(fileName, objectToReturn);
return objectToReturn;
}
}
private async static Task<StorageFile> getFile(string key)
{
try
{
return await storageFolder.GetFileAsync(key);
}
catch (FileNotFoundException ex)
{
return null;
}
}
public static async Task<string> readFileDataIndependentOfUserId(string key)
{
AccountFunctions.logMsg("Awaiting " + key);
await getLockElement(key).WaitAsync();
AccountFunctions.logMsg("Got into " + key);
try
{
StorageFile File = await getFile(key);
if (File == null)
return null;
string text = await FileIO.ReadTextAsync(File);
return text;
}
finally
{
AccountFunctions.logMsg("Released " + key);
getLockElement(key).Release();
}
}
public static async Task saveDataInFileIndependentOfUserId(string key, string data)
{
AccountFunctions.logMsg("Awaiting " + key);
await getLockElement(key).WaitAsync();
AccountFunctions.logMsg("Got into " + key);
try
{
var FileName = key;
var Fileoption = CreationCollisionOption.ReplaceExisting;
var File = await storageFolder.CreateFileAsync(FileName, Fileoption);
await FileIO.WriteTextAsync(File, data);
AccountFunctions.logMsg("Saving : " + key + " : " + data);
}
finally
{
AccountFunctions.logMsg("Released " + key);
getLockElement(key).Release();
}
}
public static async Task removeFileDataIndependentOfUserId(string key)
{
AccountFunctions.logMsg("Awaiting " + key);
await getLockElement(key).WaitAsync();
AccountFunctions.logMsg("Got into " + key);
try
{
StorageFile File = await getFile(key);
if (File == null)
{
getLockElement(key).Release();
return;
}
await File.DeleteAsync();
}
finally
{
AccountFunctions.logMsg("Released " + key);
getLockElement(key).Release();
}
}
クラッシュは、これらの静的関数を含むクラスのコンストラクターで発生します。AccountFunctions.logMsgは、アタッチされている場合にデバッガーに書き込むだけの関数です。
ローカルビルドで.NETネイティブが有効になっていないようです。プロジェクトのプロパティ> [ビルド]を見ると、[。NETネイティブツールチェーンを有効にする]チェックボックスが表示されます。これはストアで構築される構成であるため、[リリース]チェックボックスがオンになっていることを確認してください。
UWPテンプレートには、RELEASE構成用に追加された次の属性があります:true。古いプロジェクトをUWPに移行した場合は、プロジェクトファイルを空白のUWPテンプレートと比較して、問題を引き起こす可能性のある他の奇妙な点がないかどうかを確認すると便利な場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加