应用设置是否有最大大小限制?

10

背景:

我在设置中有一个巨大的xml字符串,但出现反序列化失败的情况。XmlSerializer 抱怨它不是有效的xml格式。在查看Project > Settings中的字符串时,发现它被截断了。

我尝试搜索是否存在应用程序设置大小限制,但没有找到任何信息。

然后我使用以下代码生成虚拟数据来尝试重现该问题:

[Test]
public void DumpDummyData()
{
    int n = 500;
    var s = new string('a', 100);
    using (FileStream stream = File.OpenWrite(@"C:\Temp\"+n+".txt"))
    {
        using (var writer = new StreamWriter(stream))
        {

            for (int i = 0; i < n; i++)
            {
                writer.WriteLine( i +" " +s);
            }
        }
    }
}

将文件内容粘贴到设置中时,字符串在第310行被截断。在两个不同的项目中都尝试过。

我的问题是应用程序设置大小的限制是多少?


您指定的代码并没有太多意义,请再具体一些! - Parimal Raj
这段代码只是用于生成我使用的相同虚拟数据,与问题无关。 - Johan Larsson
2
我已经验证了同样的行为,就是在创建设置时,Visual Studio UI也会忽略任何长度超过前面提到的310行的粘贴内容。如果将行缩短,则可以增加接受的总行数;因此我得出结论,重要的是字符数而不是行数。我确实需要进一步询问OP正在尝试做什么,所以建议在问题中添加更多解释。 - Tom W
我刚刚运行并测试了所有500行代码! - Parimal Raj
那我认为这更奇怪。 - Johan Larsson
Related - ispiro
2个回答

6

所以我做了一个快速测试。

using System;

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Properties.Settings.Default.test.Length);
        Console.ReadKey();
    }
}
}

测试设置包含一个超过50,000个字符的长文本。

它确实工作。

我所做的是手动更改了app.config,而不是通过Visual Studio解决方案属性设置。

我认为设置屏幕使用默认的最大值。文本框的默认最大值为32,767个字符。

所以你可以尝试通过手动更改app.config再次运行你的测试吗?

不要使用Visual Studio解决方案属性设置屏幕。


是的,这似乎是问题所在。不知道文本框的限制。谢谢您。 - Johan Larsson

0

我刚刚进行了一项测试,看起来设置字符串可以容纳32,767个字节的文本(2个字节的字节)。这太巧合了,不得不得出这是一个设计限制的结论。

然而,有一种XML文档设置类型(点击“浏览”)。这可能是解决限制的方法。


感谢您的建议,但我认为它仍然很烦人,因为它会悄悄地失败。 - Johan Larsson
@JohanLarsson 确实很奇怪,字符串类型的长度限制为2个字节,而不是通常的32个字节,更奇怪的是,它看起来像是mscorlib.dll中标准的字符串数据类型。我怀疑这个限制来自于设置选项卡中的字段限制,而不是实际的数据类型限制。您尝试过以编程方式加载数据吗? - Sylverdrag
是的,我尝试了像Fredou建议的在记事本中编辑该文件,它起作用了。 - Johan Larsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接