UWP App从商店下载时崩溃,但在侧载

时间:2015-12-02 12:29:48

标签: c# uwp .net-native

我的应用程序(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是一个只在附加时写入调试器的函数。

1 个答案:

答案 0 :(得分:3)

似乎您的本地版本中可能没有启用.NET Native。如果你看一下项目属性&gt;构建您将看到启用.NET Native工具链的复选框。确保选中此框用于发布,因为这是您在商店中构建的配置。

UWP模板为RELEASE配置添加了此属性:true。如果您已将旧项目迁移到UWP,则可以使用空白UWP模板来区分项目文件,以查看是否存在可能导致您出现问题的其他任何异常情况。