gpt4 book ai didi

c# - 带有 xmlSerializer 的 UWP - System.InvalidOperationException : Unable to generate a temporary class (result=1) compile error

转载 作者:太空狗 更新时间:2023-10-29 23:50:08 25 4
gpt4 key购买 nike

在我的通用 Windows 应用程序中,我存储用户数据,通过 XmlSerializer 将其对象转换为 xml 文件。

该应用程序正在完美地编译、构建和运行,直到不知何故(没有对代码进行任何更改)发布构建开始给我这个错误:System.InvalidOperationException:无法生成一个临时类 (result=1)

如果我在调试时构建或运行应用程序,它可以完美运行,但在发布时(.NET native 工具链处于事件状态)我收到错误。

我已将 C:\Windows\Temp 文件夹的权限授予所有人。甚至我的母亲也可以访问它,但错误仍然存​​在。

如果它确实是 XmlSerializer 上的读/写问题,我想知道是否有任何方法可以更改UWP 项目 上的序列化程序临时文件夹。

这是我用来序列化对象的代码:

    public static async Task<T> ReadObjectFromXmlFileAsync<T>(string filename)
{
// this reads XML content from a file ("filename") and returns an object from the XML
T objectFromXml = default(T);
var serializer = new XmlSerializer(typeof(T));
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file = await folder.GetFileAsync(filename).AsTask().ConfigureAwait(false);
Stream stream = await file.OpenStreamForReadAsync().ConfigureAwait(false);
objectFromXml = (T)serializer.Deserialize(stream);
stream.Dispose();
return objectFromXml;
}

public static async Task SaveObjectToXml<T>(T objectToSave, string filename)
{
// stores an object in XML format in file called 'filename'
var serializer = new XmlSerializer(typeof(T));
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file = await folder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting).AsTask().ConfigureAwait(false);
Stream stream = await file.OpenStreamForWriteAsync().ConfigureAwait(false);

using (stream)
{
serializer.Serialize(stream, objectToSave);
}
}

//This uses a subfolder
public static async Task<T> ReadObjectFromXmlFileAsync<T>(string filename)
{
// this reads XML content from a file ("filename") and returns an object from the XML
T objectFromXml = default(T);
var serializer = new XmlSerializer(typeof(T));
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFolder subFolder = await folder.GetFolderAsync("Notes").AsTask().ConfigureAwait(false);
StorageFile file = await subFolder.GetFileAsync(filename).AsTask().ConfigureAwait(false);
Stream stream = await file.OpenStreamForReadAsync().ConfigureAwait(false);
objectFromXml = (T)serializer.Deserialize(stream);
stream.Dispose();
return objectFromXml;
}

我错过了什么?谁能帮忙?

最佳答案

您是否偶然引用了 XML 序列化文件被“添加为链接”的项目? (在我的案例中是什么导致了上述错误)在那种情况下,这里是......

...解决方案:

显然,您仍然可以使用代码共享的“添加为链接”方式,但是为了启用“使用 .NET Native 工具链编译”而没有任何那些不明显的无关错误,“添加为链接” ” 文件需要移动到调用方项目

关于c# - 带有 xmlSerializer 的 UWP - System.InvalidOperationException : Unable to generate a temporary class (result=1) compile error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34813690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com