我正在开发一个UWP应用程序。该解决方案包含许多用C#编写的项目(例如数据库),但UI是一个JavaScript项目。
其中一个C#类包含以下代码,用于使用DataContractSerializer保存数据库副本:
0x80070002 - JavaScript runtime error: The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization.Xml, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
WinRT information: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization.Xml, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
当从JS运行此代码时,我收到以下错误:
{{1}}
如果有人能指出我正确的方向,我很难在网上找到解决方案吗?
感谢。
答案 0 :(得分:0)
我最终删除了对数据协定的所有引用,并将其替换为自定义函数以构建JsonObject。然后我自己将其写入文件,而不是依赖于DataContractSerializer。
数据库中的每个类现在都有一个ToJson函数,类似于:
internal Person(JsonObject root) : this()
{
Id = root.GetNamedString(JSON_ID, null);
Deleted = root.GetNamedBoolean(JSON_DELETED, false);
Photo = root.GetNamedObject(JSON_PHOTO, null) != null ? new Photo(root.GetNamedObject(JSON_PHOTO, null)) : null;
Prefix = root.GetNamedString(JSON_PREFIX, null);
GivenName = root.GetNamedString(JSON_GIVENNAME, null);
MiddleNames = root.GetNamedString(JSON_MIDDLENAMES, null);
FamilyName = root.GetNamedString(JSON_FAMILYNAME, null);
Suffix = root.GetNamedString(JSON_SUFFIX, null);
Notes = root.GetNamedString(JSON_NOTES, null);
}
每个类还包含一个接受Json对象的构造函数,例如:
private async Task<Boolean> Save()
{
try
{
updated = DateTime.Now;
StorageFile file = await ApplicationData.Current.RoamingFolder.CreateFileAsync(id + ".json", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, ToJson().Stringify());
return true;
}
catch (Exception)
{
return false;
}
}
然后我可以使用:
将其写入文件private static async Task<Database> Open(String id)
{
try
{
StorageFile file = await ApplicationData.Current.RoamingFolder.GetFileAsync(id + ".json");
return new Database(JsonObject.Parse(await FileIO.ReadTextAsync(file)));
}
catch (Exception)
{
return null;
}
}
使用以下方式阅读:
{{1}}
所有这些都比弄乱数据合同更容易。