我的应用程序(UWP,C#/ xaml)在发布模式下工作正常,如果我通过Visual Studio部署它,或者我在手机上加载appx。
但是如果我从商店下载并运行它,它就会崩溃并出现以下异常
System.IO.FileLoadException:无法加载文件或程序集'System.Threading,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
此外,相同的应用程序在PC上运行,而不会在通过VS进行侧载/加载时崩溃,甚至从商店下载时也是如此。 任何帮助将不胜感激。
编辑:代码段 > private static Dictionary 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是一个只在附加时写入调试器的函数。
答案 0 :(得分:3)
似乎您的本地版本中可能没有启用.NET Native。如果你看一下项目属性&gt;构建您将看到启用.NET Native工具链的复选框。确保选中此框用于发布,因为这是您在商店中构建的配置。
UWP模板为RELEASE配置添加了此属性:true。如果您已将旧项目迁移到UWP,则可以使用空白UWP模板来区分项目文件,以查看是否存在可能导致您出现问题的其他任何异常情况。