2013-12-08 3 views
7

Фон: У меня была большая строка xml в настройке, и она не была десериализована. XmlSerializer жаловался, что он недействителен xml. При просмотре строки в Project> Settings она выглядела усеченной.Максимальный размер для настроек приложения?

Я искал googled, если для параметров приложения существует ограничение, но ничего не найдено.

Затем я попытался воспроизвести его с помощью dummydata, сгенерированные с помощью следующего кода:

[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 при вставке содержимого файла в установке. Пробовал это в двух разных проектах.

Вопрос в том, что является пределом для размера настроек приложения?

+0

код, указанный вами, не имеет особого смысла, пожалуйста, будьте немного более конкретным! –

+0

Код предназначен только для создания той же самой dummydata, которую я использовал. Не имеет отношения к проблеме. –

+2

Я проверил такое же поведение, поскольку пользовательский интерфейс Visual Studio для создания настроек также игнорирует любой вставленный контент дольше, чем вышеупомянутые 310 строк. Создание строк короче увеличивает общее количество принятых строк; поэтому я заключаю, что это число символов, а не количество строк, которое является значительным. Мне нужно было еще раз спросить о том, что пытался сделать OP, поэтому к вопросу нужно добавить еще несколько объяснений. –

ответ

5

так что я сделал быстрый тест

using System; 

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

установка тест содержит длинный текст, более 50000 символов

это работает.

что я сделал - я изменил app.config вручную, не из настроек свойств визуальной студии.

Я предполагаю, что экран настройки использует максимальное значение по умолчанию. Максимальное значение по умолчанию для текстового поля - 32 767 символов.

, так что вы можете попробовать свой тест снова, изменив app.config самостоятельно?

Не используйте экран настроек свойств визуальной студии.

+0

Да, это, похоже, проблема. Не знал о ограничении текстового поля. Тай сэр. –

1

У меня только что был тест, и похоже, что строка настроек может содержать ровно 32 767 байт текста (2 байта байт). По большому счету совпадение не означает, что это лимит дизайна.

Существует, однако, тип настройки документа XML (нажмите «Обзор»). Это может быть способ обойти ограничения.

+0

Спасибо за предложение, все еще раздражающее, что он терпит неудачу, как этот imo. –

+0

@JohanLarsson Действительно, довольно странно видеть, что тип строки ограничен длиной до 2 байтов вместо обычных 32 байтов, а тем более, потому что он похож на строку, которая, как предполагается, является стандартным строковым типом данных из mscorlib.dll. Я подозреваю, что лимит исходит из предела поля на вкладке настроек, а не для фактического предела типа данных. Вы пробовали загружать данные в настройках программно? – Sylverdrag

+0

Да, попытался отредактировать файл в блокноте, как предложил Фредо, и это сработало. –

Смежные вопросы