1 2008-02-20 Marek Habersack <mhabersack@novell.com>
3 * ConfigurationSection.cs: support the "configSource" attribute
4 when deserializing a section. Contents of the file (if it exists)
5 replaces the previous section contents.
7 * ConfigurationElement.cs: ignore the "configSource" attribute if we're a
8 ConfigurationSection instance.
9 HasValues () returns true only if any of the properties has the
10 origin set to SetHere.
12 2008-02-07 Konstantin Triger <kostat@mainsoft.com>
14 * ClientConfigurationSystem.cs: performance: refactor out the Configuration
15 object construction from GetSection() to the ctor.
17 2008-01-16 Zoltan Varga <vargaz@gmail.com>
19 * ConfigurationElement.cs: Allow non-public constructors. Fixes #353554.
21 * PropertyInformation.cs: Allow non-public constructors. Fixes #353557.
23 * ConfigurationElement.cs: Consider non-public properties as well. Fixes
26 2008-01-12 Sebastien Pouliot <sebastien@ximian.com>
28 * ConfigurationLocationCollection.cs: Avoid infinite recursion.
31 2007-12-25 Konstantin Triger <kostat@mainsoft.com>
33 * KeyValueInternalCollection.cs: properly override NameValueCollection
34 to support interop with it.
36 2007-12-25 Konstantin Triger <kostat@mainsoft.com>
38 * ConfigurationElement.cs:
39 1. typo - pass the correct property to Attribute.GetCustomAttribute.
40 2. Pass oroginal exception as inner.
42 2007-12-05 Marek Habersack <mhabersack@novell.com>
44 * ConfigurationElement.cs: some property values may be null
45 objects in GetHashCode.
47 2007-11-23 Marek Habersack <mhabersack@novell.com>
49 * ConfigurationElementCollection.cs: ThrowOnDuplicate returns true
50 if the collection is one of the AddRemoveClearMap or
51 AddRemoveClearMapAlternate types.
53 2007-11-15 Atsushi Enomoto <atsushi@ximian.com>
55 Part of fix for bug #323708.
56 * ConfigurationSection.cs : in GetRuntimeObject(), take parent
57 section instance into consideration.
58 * SectionInformation.cs : to make it possible, GetParentSection()
59 should be implemented.
60 * Configuration.cs : to make it possible, GetSectionInstance()
61 should set parent section on its SectionInformation. It used to
62 just steal parent's xml when its own xml does not exist, but
63 it now blocks correct configuration retrieval.
65 2007-11-15 Atsushi Enomoto <atsushi@ximian.com>
67 * SectionGroupInfo.cs : remove extra StringBuilder creation.
69 2007-11-14 Atsushi Enomoto <atsushi@ximian.com>
71 * Configuration.cs : (Save) when the given file path is relative
72 it failed to create directory. Fixed standalone test t25/t26.
73 * InternalConfigurationHost.cs : pass userLevel to create a host
76 2007-10-04 Atsushi Enomoto <atsushi@ximian.com>
78 * InternalConfigurationHost.cs : when the streamName is for
79 machine.config, try get_bundled_machine_config() icall first.
80 This hopefully implements the requested feature in bug #325022.
81 * Configuration.cs : added comment.
83 2007-08-31 Gert Driesen <drieseng@users.sourceforge.net>
85 * ConfigurationManager.cs: Fixed line endings. Avoid warning by
86 changing accessibility of ChangeConfigurationSystem to internal.
87 * Configuration.cs: Fixed compiler warnings.
88 * DpapiProtectedConfigurationProvider.cs: Fixed line endings.
90 2007-08-21 Atsushi Enomoto <atsushi@ximian.com>
92 * ConfigurationManager.cs : To open exe configuration, use
93 GetEntryAssembly() first, and GetCallingAssembly() only when
94 it was not found. Should fix bug #82071.
96 2007-06-21 Atsushi Enomoto <atsushi@ximian.com>
98 * Configuration.cs, InternalConfigurationHost.cs :
99 configuration file to write might be given as an absolute path,
100 where the ancestor directories may not exist.
102 2007-06-20 Atsushi Enomoto <atsushi@ximian.com>
104 * ConfigurationManager.cs : in OpenExeConfiguration() and
105 OpenMappedExeConfiguration(), take userLevel into consideration.
106 * InternalConfigurationHost.cs : consider ConfigurationUserLevel and
107 use correct config map file in InitForConfiguration().
109 2007-06-18 Atsushi Enomoto <atsushi@ximian.com>
111 * ClientConfigurationSystem.cs : do not asume GetEntryAssembly()
112 returns non-null. Patch by Patrick Perry.
114 2007-06-13 Atsushi Enomoto <atsushi@ximian.com>
116 * ConfigurationElement.cs : SerializeToXmlElement() should be
117 called regardless of HasValues() return value, especially since
118 it could be overriden (e.g. in SettingsValueElement).
120 2007-06-13 Atsushi Enomoto <atsushi@ximian.com>
122 * ConfigurationSectionGroup.cs
123 Configuration.cs : ConfigurationSectionGroup must be initialized
124 at least when being added to a collection.
126 2007-06-12 Vladimir Krasnov <vladimirk@mainsoft.com>
128 * ConfigurationElement.cs: refactored GetKeyProperties and
129 GetDefaultCollection methods, map should not be used here, Properties
130 will do instead. Refactored ElementMap class
131 * ConfigurationElementCollection.cs: fixed InitFromProperty, GetMap()
132 should not be called here
133 * ElementInformation.cs: fixed Properties, moved to ctor to be thread
135 * PropertyInformation.cs: members assigned readonly modifier
137 2007-05-30 Marek Habersack <mhabersack@novell.com>
139 * SectionGroupInfo.cs: <location> elements are case-insensitive
140 and the same 'path' attribute may be used only once.
142 * ConfigurationLocationCollection.cs: Find should be
143 case-insensitive for all targets, not just TARGET_JVM.
145 2007-05-17 Igor Zelmanovich <igorz@mainsoft.com>
147 * Configuration.cs: FilePath implemented according to MSDN:
148 If the value for this FilePath property represents a merged view and
149 no actual file exists for the application, the path to the parent
150 configuration file is returned.
152 2007-05-15 Igor Zelmanovich <igorz@mainsoft.com>
155 * ConfigurationLocation.cs:
156 implemented EvaluationContext property.
158 2007-05-15 Igor Zelmanovich <igorz@mainsoft.com>
160 * ConfigurationLocationCollection.cs: for TARGET_JVM only:
161 location path is case-insensitive.
163 2007-05-15 Marek Habersack <mhabersack@novell.com>
165 * ConfigurationElement.cs: added value validation on
166 deserialization from the config file.
168 2007-05-14 Igor Zelmanovich <igorz@mainsoft.com>
170 * ConfigurationElement.cs: when attribute value cannot be parsed,
171 ConfigurationErrorException is thrown.
173 2007-05-09 Igor Zelmanovich <igorz@mainsoft.com>
175 * ConfigurationManager.cs:
176 added MonoLimitation attribute for TARGATE_JVM.
178 2007-05-08 Igor Zelmanovich <igorz@mainsoft.com>
180 * ConnectionStringSettingsCollection.cs: removed 'new' keyword, cause
181 property doesn't hide any inherit property.
183 2007-04-24 Atsushi Enomoto <atsushi@ximian.com>
185 * InternalConfigurationHost.cs : machine configuration covers all
186 ConfigurationAllowDefinition values.
188 2007-04-17 Atsushi Enomoto <atsushi@ximian.com>
190 * ConfigurationSectionCollection.cs : GetEnumerator() should return
191 IEnumerator for the items, not keys.
192 * ConfigurationProperty.cs : more helpful type mismatch message.
194 2007-04-16 Marek Habersack <mhabersack@novell.com>
196 * SectionGroupInfo.cs: another (and final, hopefully) fix for bug
197 #81321 and several other related issues that were discovered by
198 the way. Thanks to Atsushi for help with XmlReader!
200 2007-04-15 Marek Habersack <mhabersack@novell.com>
202 * SectionGroupInfo.cs: another incarnation of the fix for bug
205 2007-04-12 Marek Habersack <mhabersack@novell.com>
207 * SectionGroupInfo.cs: a better fix for #81321
209 2007-04-10 Marek Habersack <mhabersack@novell.com>
211 * SectionGroupInfo.cs: make sure empty sections with the
212 short-circuit tag ends (<section/>) don't make the process loop
213 endlessly. Fixes bug #81321.
215 2007-03-22 Konstantin Triger <kostat@mainsoft.com>
217 * ConfigInfo.cs: should be able instantiate types with private ctors.
219 2007-03-19 Vladimir Krasnov <vladimirk@mainsoft.com>
221 * ConfigurationSectionCollection.cs,
222 * ConfigurationSectionGroupCollection.cs,
223 * PropertyInformationCollection.cs,
224 * SectionGroupInfo.cs: used StringComparer.Ordinal instead of
227 2007-03-15 Vladimir Krasnov <vladimirk@mainsoft.com>
229 * ConfigurationSectionCollection.cs,
230 * ConfigurationSectionGroupCollection.cs,
231 * PropertyInformationCollection.cs,
232 * SectionGroupInfo.cs: these collections should be based on case
233 insensitive NameObjectCollectionBase
234 * added OrdinalComparer.cs for use in NameObjectCollectionBase
236 2007-02-07 Atsushi Enomoto <atsushi@ximian.com>
238 * SectionInfo.cs : don't stop at restartOnExternalChanges attribute.
240 2007-01-16 Konstantin Triger <kostat@mainsoft.com>
242 * ConfigurationElement.cs: ignore properties with null or empty name.
244 2007-01-16 Konstantin Triger <kostat@mainsoft.com>
246 * ConfigurationElement.cs: Try to deserilalize an unrecognized element by
247 current element, and only if failed delegate to default collection.
249 2006-12-27 Vladimir Krasnov <vladimirk@mainsoft.com>
251 * ConfigurationElementCollection.cs: fixed BaseAdd, looking for
252 identical element when collection type is not alternate
254 2006-12-27 Vladimir Krasnov <vladimirk@mainsoft.com>
256 * ConnectionStringSettingsCollection.cs: made connection string key
259 2006-12-27 Atsushi Enomoto <atsushi@ximian.com>
261 * ConfigurationElementCollection.cs : fixed BaseAdd() with
262 throwIfExists to not raise an error for identical element
263 but for different element which shares the same key. Fix by
266 2006-12-21 Vladimir Krasnov <vladimirk@mainsoft.com>
268 * ConfigurationProperty.cs: fixed DefaultValue of type Enum
270 2006-12-10 Konstantin Triger <kostat@mainsoft.com>
272 * ConfigurationElement.cs: Delegate parameter checking and default
273 assigning to Configuratin property.
274 * ConfigurationProperty.cs:
275 Ensure the TypeConvert and Validator always exist.
276 Ensure the primitive types are properly initialized.
278 2006-12-09 Vladimir Krasnov <vladimirk@mainsoft.com>
280 * ConfigurationElementCollection.cs
281 * ConfigurationRemoveElement.cs: fixed key for <remove> element in
282 ConfigurationRemoveElement class
284 2006-11-28 Marek Habersack <grendello@gmail.com>
286 * SectionGroupInfo.cs: Implement merging of section groups with
287 the same names and parents.
289 * ConfigInfo.cs: Add an abstract method for merging sections.
291 * SectionInfo.cs: Add implementation of an abstract base method
293 2006-08-23 Konstantin Triger <kostat@mainsoft.com>
295 * SectionInfo.cs: refactoring - remove unneeded bool? usage.
297 2006-11-05 Vladimir Krasnov <vladimirk@mainsoft.com>
299 * added: ConfigurationRemoveElement.cs, common element for <remove>
300 * ConnectionStringSettingsCollection.cs: reverted last fix for
302 * ConfigurationElementCollection.cs: fixed the way that
303 OnDeserializeUnrecognizedElement method handles <remove> element
305 2006-11-02 Vladimir Krasnov <vladimirk@mainsoft.com>
307 * ConfigurationElement.cs: typo in DefaultCollectionProperty
310 2006-10-30 Joel Reed <joel.reed@ddiworld.com>
312 * NameValueConfigurationCollection.cs: Implement the Properties
315 2006-08-23 Konstantin Triger <kostat@mainsoft.com>
317 * ConfigurationLocation.cs: do not read root element, correctly close stream.
318 * Configuration.cs: use ReadData for nested content to throw if location
319 elements are encounterd.
320 In constructor taking parent Configurqation: do not call Init and so avoid
321 rereading config file.
323 2006-09-05 Vladimir Krasnov <vladimirk@mainsoft.com>
325 * NameValueConfigurationElement.cs: fixed functionality
326 * ConfigurationElementCollection.cs,
327 ConnectionStringSettingsCollection.cs: fixed <remove> element in
328 connectionStrings section
330 2006-08-23 Konstantin Triger <kostat@mainsoft.com>
332 * ConfigurationSection.cs: for net 1.1 SectionHandlers: return null in case
333 RawXml is null, as net 1.1 does.
335 2006-08-17 Vladimir Krasnov <vladimirk@mainsoft.com>
337 * ConfigurationFileMap.cs: added TARGET_JVM on not supported members
340 2006-07-07 Atsushi Enomoto <atsushi@ximian.com>
342 * ConfigurationManager.cs : OpenExeConfiguration(null) should still
343 work. This is required for embedded scenario.
345 2006-06-10 Atsushi Enomoto <atsushi@ximian.com>
347 * SectionGroupInfo.cs : skip <dllmap> in configuration.
349 2006-05-14 Atsushi Enomoto <atsushi@ximian.com>
351 * ConfigurationManager.cs: since ConfigurationSystem is different
352 for web.config, cast from ConfigurationSection to runtime object
353 should be done at GetSection().
354 This really fixed bug #78372.
356 2006-05-12 Atsushi Enomoto <atsushi@ximian.com>
358 * Configuration.cs : configPath is null for machine.config, so don't
359 use it. Use streamName instead. To my understanding, this should
362 2006-05-10 Atsushi Enomoto <atsushi@ximian.com>
364 * ConnectionStringSettings.cs : it seems that "name" property
365 could be null i.e. there is no StringValidator.
366 * StringValidator.cs : allow null.
368 2006-05-10 Atsushi Enomoto <atsushi@ximian.com>
370 * ConfigurationManager.cs : use GetCallingAssembly() instead of
371 GetEntryAssembly() which possibly returns null (e.g. nunit) in
372 OpenExeConfiguration(). Several nunit test failures are gone.
374 2006-05-10 Atsushi Enomoto <atsushi@ximian.com>
376 * ConnectionStringSettings.cs : oops, this API fix broke standalone
379 2006-05-10 Atsushi Enomoto <atsushi@ximian.com>
381 * ConfigurationElement.cs,
382 ConfigurationErrorsException.cs,
383 ConfigurationUserLevel.cs,
384 ConfigurationPropertyOptions.cs,
385 ConnectionStringSettings.cs : assorted minor corcompare fixes.
387 2006-05-10 Atsushi Enomoto <atsushi@ximian.com>
389 * Configuration.cs : some kind of refactoring is absolutely needed
390 here. Reuse RawXml from parentSection when data was not available
391 on current section. This should fix bug #78353.
393 2006-05-10 Atsushi Enomoto <atsushi@ximian.com>
395 * ConfigurationElement.cs,
397 in some cases RawXml was set null string, so skip such cases.
398 * Configuration.cs : support IConfigurationSectionHandler here.
399 * ConfigurationManager.cs : GetSection() now returns name value
400 collection, not a section.
401 * ConfigurationSection.cs : added SectionHandler for
402 IConfigurationSectionHandler support, and use its Create() in
404 * ClientConfigurationSystem.cs :
405 use GetRuntimeObject() in GetSection(). Thus now
406 ConfigurationManager.GetSection() returns a runtime object.
409 2006-04-28 Atsushi Enomoto <atsushi@ximian.com>
411 * SectionGroupInfo.cs :
412 sections which are defined in sectionGroups could be directly
413 referenced, so search corresponding section recursively.
414 * DefaultSection.cs : It does not reject unrecognized contents.
416 2006-04-26 Chris Toshok <toshok@ximian.com>
418 * SectionInformation.cs (.ctor): add MonoTODO about the default
419 value for require_permission.
420 (RequirePermission): implement the getter/setter for this so
421 Atsushi's previous commit doesn't break everything :)
423 2006-04-26 Atsushi Enomoto <atsushi@ximian.com>
426 SectionInfo.cs : added support for "requirePermission" attribute
427 in "section" element. This fixes bug #77957.
429 2006-04-25 Chris Toshok <toshok@ximian.com>
431 * ConfigurationElementCollection.cs (Reset): it makes no sense to
432 pass the typename to CreateNewElementInternal. the argument is
433 the elementname. pass null instead.
436 2006-02-01 Atsushi Enomoto <atsushi@ximian.com>
438 * ConfigurationElement.cs : ListErrors() and SetPropertyValue()
440 * ConfigurationSection.cs : the .ctor() is protected.
441 * ConfigurationElementCollection.cs : CollectionType is public.
442 Count and BaseAdd() are not virtual.
443 * ConfigurationPropertyCollection.cs : Count is not virtual.
445 2006-02-01 Chris Toshok <toshok@ximian.com>
447 * ConfigurationElement.cs: revert the patch that stores and writes
448 out xmlns attributes for all elements.
450 * ClientConfigurationSystem.cs: SupportsUserConfig == false.
452 * AppSettingsSection.cs (GetRuntimeObject): call col.SetReadOnly()
453 only if SupportsUserConfig != true.
455 * ConfigurationManager.cs (ConfigurationSystem): add a property
456 like ConfigurationFactory, and use it instead of the private field
459 2006-01-26 Chris Toshok <toshok@ximian.com>
461 * SectionGroupInfo.cs (ReadContent): handle "location" (seemingly)
464 * InternalConfigurationRoot.cs: misc logical additions. still
467 * ConfigurationManager.cs (OpenExeConfigurationInternal): throw an
468 exception if both calling_assembly and exePath are null. Allow
469 the exePath to be a path to a config file as well, checking to see
470 if it ends in .config before appending.
471 (OpenExeConfiguration): stop blindly passing
472 Assembly.GetCallingAssembly. I'm assuming this will likely break
473 .dll.config usage. need to investigate that (and write more unit
475 (GetSection): call configSystem.GetSection.
476 (RefreshSection): call configSystem.RefreshSection.
477 (ChangeConfigurationSystem): modeled after the
478 ConfigurationSettings System.Web hack - allow
479 WebConfigurationManager to replace the current
480 IInternalConfigSystem.
482 * InternalConfigurationHost.cs (InternalConfigurationHost): make
483 abstract, and remove all the NotImplenmentedException's.
485 * ConfigurationElement.cs (DeserializeElement): store off the xml
486 namespace if there is one.
487 (SerializeElement): write out the namespace if there was one.
489 * ClientConfigurationSystem.cs: new class, based on some stack
490 traces I've seen in tests. Kinda (well, not *kinda*..) hacky.
492 * Configuration.cs (NamespaceDeclared): implement.
493 (Load): don't swallow all exceptions, just the ones raised when we
494 open the stream for reading.
495 (ReadConfigFile): handle xmlns.
497 2006-01-25 Chris Toshok <toshok@ximian.com>
499 * ConfigInfo.cs (ThrowException): throw a
500 ConfigurationErrorsException, not a ConfigurationException.
502 * SectionGroupInfo.cs (ReadContent): throw an exception
503 unconditionally if we see a <location>. they aren't valid in
506 2006-01-25 Chris Toshok <toshok@ximian.com>
508 * KeyValueInternalCollection.cs: don't use a nested collection,
509 just defer to our base class. This fixes usage of
510 ConfigurationManager.AppSettings.Keys.
512 2006-01-13 Chris Toshok <toshok@ximian.com>
514 * AppSettingsSection.cs (GetRuntimeObject): only access
515 Settings[key] once per iteration.
517 2006-01-09 Chris Toshok <toshok@ximian.com>
519 * ConfigurationManager.cs (AppSettings): just return
520 AppSettingsSection.GetRuntimeObject() here.
522 * AppSettingsSection.cs: fix the "file" property to match dumper
524 (GetRuntimeObject): this returns a KeyValueInternalCollection in
527 2006-01-09 Chris Toshok <toshok@ximian.com>
529 * ElementInformation.cs (Validator): if propertyInfo == null,
530 return a DefaultValidator instance.
532 2006-01-09 Chris Toshok <toshok@ximian.com>
534 * AppSettingsSection.cs (.cctor): specify null for
537 * ProtectedProviderSettings.cs (.cctor): specify null for
540 2006-01-03 Chris Toshok <toshok@ximian.com>
542 * Configuration.cs (SaveAs): open with FileMode.OpenOrCreate so we
543 can save to a new file.
544 (CreateSection): don't bother to set the section information's
545 Name here. we'll do it in SectionInfo.CreateInstance.
547 * ProtectedConfiguration.cs (Section): new static property so we
548 can remove all the GetSection calls.
549 (GetProvider): load a named provider, optionally throwing an
550 exception if it's not found.
552 * InternalConfigurationHost.cs (EncryptSection, DecryptSection):
553 make these private interface implementations, and call
554 protectedSection.{EncryptSection,DecryptSection}.
556 * ProtectedConfigurationSection.cs (EncryptSection,
557 DecryptSection): add these two calls. They really shouldn't be
558 here, but I saw them in an MS stack trace and thought "why not?".
560 * ConfigurationSection.cs (SectionInformation): don't set
561 attributes here, that's done in SectionInfo.CreateInstance.
562 (DeserializeSection): shoehorn in the decryption stuff here. It
563 doesn't belong here, and I've added a MonoTODO about it. It
564 should live someplace like SectionInfo.ReadData (which would make
565 it similar to the encryption stuff in .WriteData).
567 * SectionInformation.cs (IsProtected): remove the special flag,
568 just return true if we have a non-null protection_provider.
569 (ProtectSection): do nothing but try to instantiate the named
571 (UnprotectSection): null out protection_provider.
573 * DpapiProtectedConfigurationProvider.cs: move the
574 NotSupportedExceptions to Decrypt/Encrypt so we don't bomb out
575 when parsing our machine.config file.
577 * RsaProtectedConfigurationProvider.cs: initial implementation.
578 much is missing (OAEP support, key importing, adding/deleting
579 keys), but it can be used.
581 2006-01-02 Chris Toshok <toshok@ximian.com>
583 * RsaProtectedConfigurationProvider.cs: implement the
584 CspProviderName and UseOAEP properties..
586 2006-01-02 Chris Toshok <toshok@ximian.com>
588 * ProtectedConfigurationSection.cs: flesh this out (and add logic
589 to instantiate providers, based on some of the standalone test
590 exception stack traces.)
592 * ProtectedConfiguration.cs: new implementation.
594 * ProtectedConfigurationProviderCollection.cs: new
597 * ProtectedProviderSettings.cs: new implementation.
599 * ProtectedConfigurationProvider.cs: trim the superclass's name.
601 * RsaProtectedConfigurationProvider.cs: stubbed, unimplemented.
603 * DpapiProtectedConfigurationProvider.cs: add stubbed
604 implementation that throws NotSupportedException telling people
605 they should be using RsaProtectedConfigurationProvider.
607 2006-01-02 Chris Toshok <toshok@ximian.com>
609 * DefaultSection.cs (Properties): implement.
611 * IgnoreSection.cs: move from lazily creating the properties
612 collection to sharing a single one across all instances.
614 * ConfigurationLockCollection.cs (IsReadOnly): fix compiler warning.
616 * ConfigurationElementCollection.cs (BaseAdd) remove logic to
617 remove an old matching element.
618 (BaseGetKey): throw an exception if @index is out of range.
620 * SectionInformation.cs (SectionName): just return name, like Name
621 does.. redundant, but it matches tests.
622 (GetRawXml): implement.
623 (SetRawXml): implement.
625 * ConfigurationSection.cs (SectionInformation): fill in
626 sectionInformation.Type before returning.
627 (DeserializeSection): save off the raw xml to our
630 * ConfigurationElement.cs (LockItem): implement.
631 (DeserializeElement): add support for the "lockItem" attribute.
633 2005-12-16 Chris Toshok <toshok@ximian.com>
635 * ConfigurationLockCollection.cs (Add): only add the name if it's
637 (IsReadOnly): always return false for the time being, in the
638 non-exceptional case.
640 2005-12-15 Chris Toshok <toshok@ximian.com>
642 * ConfigurationElement.cs (LockAllAttributesExcept): implement.
643 (LockAllElementsExcept): implement.
644 (DeserializeElement): handle the built-in attributes (lock* for
647 2005-12-15 Chris Toshok <toshok@ximian.com>
649 * ConfigurationLockCollection.cs (..ctor): don't call Populate.
651 (CheckName): make sure the passes in name is valid for this type
653 (Add): call CheckName, and set is_modified to true.
654 (Clear): set is_modified.
655 (IsReadOnly): add plausable implementation, including exception in
656 the case where the name isn't found.
657 (Remove): set is_modified.
658 (SetFromList): implement.
659 (get_AttributeList): implement.
660 (set_IsModified): add internal setter so we can clear the modified
663 2005-12-12 Chris Toshok <toshok@ximian.com>
665 * AppSettingsSection.cs (DeserializeElement): provide rather naive
666 version of the file="" handling. It's enough to make our tests
669 2005-12-11 Chris Toshok <toshok@ximian.com>
671 * ConnectionStringsSection.cs (..cctor): use "" instead of null
672 for the name of the default collection.
674 * AppSettingsSection.cs (..cctor): create a property for the
676 (DeserializeElement): call base.DeserializeElement.
677 (File): index off the property, not the name.
678 (Settings): don't use an private variable here, use
681 * ConfigurationManager.cs (GetSection): GetEntryAssembly returns
682 null for new app domains. so deal with this by calling
683 GetCallingAssembly if it's null. This is probably still wrong but
684 it doesn't NRE in xsp2.
685 (AppSettings): remove MonoTODO.
687 * KeyValueConfigurationElement.cs (..ctor): new method, create the
688 ConfigurationProperty's and the collection here.
689 (.ctor): add internal arg-less ctor.
690 (Key): use keyProp instead of "key".
691 (Value): use vlaueProp instead of "value".
692 (Properties): return our class's properties.
694 * KeyValueConfigurationCollection.cs (CreateNewElement): use the
696 (GetElementKey): re-enable the BaseIndexOf test.
698 2005-12-02 Chris Toshok <toshok@ximian.com>
700 * Configuration.cs (Save): call WriteStartDocument.
702 * ConnectionStringSettingsCollection.cs (CreateNewElement): use
703 parameter-less ctor to keep from generating exceptions when using
706 2005-12-02 Chris Toshok <toshok@ximian.com>
708 * ConnectionStringSettings.cs: tabify, fix default values, and add
709 a string validator for "name".
711 2005-12-02 Chris Toshok <toshok@ximian.com>
713 * CommaDelimitedStringCollectionConverter.cs (ConvertTo): change
714 the type check away from an exact check for
715 CommaDelimitedStringCollection to an assignable test from
716 StringCollection. This is due to the fact that AuthorizationRule
717 doesn't create CommaDelimitedStringCollections, for some odd
718 reason. It uses StringCollections.
720 * PropertyInformation.cs (Value): remove the case for
721 IsDefaultCollection - it's not necessary, as the property is an
724 * ConnectionStringSettings.cs: fix formatting and remove some
727 * ConnectionStringSettingsCollection.cs: same.
729 * ConnectionStringsSection.cs: same.
731 * ConfigurationElement.cs (SerializeToXmlElement): don't write the
732 enclosing start/end elements if the elementName is null or "".
733 this fixes the case for the DefaultCollections (at least in the
734 case of connectionStrings).
736 * IgnoreSection.cs (Properties): remove the MonoTODO.
738 * SectionInfo.cs (WriteData): remove the "<!-- dd -->" output.
740 2005-11-28 Chris Toshok <toshok@ximian.com>
742 * ProviderSettings.cs: use ConfigurationProperty's to implement
745 2005-11-24 Chris Toshok <toshok@ximian.com>
747 * ConfigurationProperty.cs (Validate): add internal method.
749 2005-11-24 Chris Toshok <toshok@ximian.com>
751 * ConfigurationElement.cs (ElementProperty): make this protected
752 internal virtual instead of public.
753 (SetPropertyValue): add a validator call and a blurb about the
754 code based on information gleaned from tests.
755 (set_Item (string)): call SetPropertyValue in the setter.
757 2005-11-14 Chris Toshok <toshok@ximian.com>
759 * CommaDelimitedStringCollection.cs: reformat things a bit, and
760 flag ToString() as override.
762 * DefaultSection.cs: new stubbed out implementation.
764 * CommaDelimitedStringCollectionConverter.cs: new implementation.
766 2005-11-10 Chris Toshok <toshok@ximian.com>
768 * AppSettingsSection.cs (DeserializeElement): stop explicitly
769 calling Settings.DeserializeElement, as the DefaultCollection
772 * ConfigurationElement.cs (DeserializeElement): rework the loop
773 here so that we actually loop over all the content elements.
775 2005-11-09 Chris Toshok <toshok@ximian.com>
777 * ConfigurationElement.cs: Add support for DefaultCollection
780 * PropertyInformation.cs (PropertyInformation.Value): add case for
783 * SectionGroupInfo.cs (SectionGroupInfo.ReadConfig): when we read
784 a "type" attribute, make sure the cached System.Type is cleared.
786 2005-10-25 Chris Toshok <toshok@ximian.com>
788 * InfiniteTimeSpanConverter.cs: new implementation.
790 * InfiniteIntConverter.cs: new implementation.
792 * GenericEnumConverter.cs: new implementation.
794 * Configuration.cs: we don't need to check with "is" after we use
795 "as".. just check for null-ness.
797 * KeyValueConfigurationCollection.cs: GetElementKey should throw
798 NRE if element == null.
800 * CommaDelimitedStringCollection.cs: raise the correct exceptions
801 in the read only case, and return null from ToString if there are
804 2005-10-25 Chris Toshok <toshok@ximian.com>
806 * PositiveTimeSpanValidatorAttribute.cs: new implementation.
808 * PositiveTimeSpanValidator.cs: new implementation.
810 2005-10-24 Chris Toshok <toshok@ximian.com>
812 * TimeSpanSecondsOrInfiniteConverter.cs: new implementation.
814 * TypeNameConverter.cs: new implementation.
816 * WhiteSpaceTrimStringConverter.cs: new implementation.
818 2005-10-24 Chris Toshok <toshok@ximian.com>
820 * AppSettingsSection.cs (DeserializeElement, SerializeSection):
821 split the behavior based on if File == "". If it is, we do the
822 default. otherwise we throw NIE.
824 * ConnectionStringsSection.cs (DeserializeElement): we shouldn't
825 need this, but we do until the IsDefaultCollection stuff is fixed.
827 * ConfigurationElementCollection.cs
828 (OnDeserializeUnrecognizedElement): for clearElementName, make
829 sure we have no attributes.
831 * ConnectionStringSettingsCollection.cs (get_Properties): for now
832 just chain up to base.Properties.
834 * ConfigurationElement.cs (ReflectProperties): do the default
835 value/property type check in a more robust way, using
838 2005-10-24 Chris Toshok <toshok@ximian.com>
840 * ConfigurationElement.cs: treat
841 ConfigurationProperty.NoDefaultValue the same as null when we're
842 checking the default value's type. this fixes t13 and 14.
844 * ConnectionStringsSection.cs (ConnectionStrings): fix the
845 DefaultValue in the ConfigurationPropertyAttribute.
847 2005-10-24 Chris Toshok <toshok@ximian.com>
849 * KeyValueConfigurationCollection.cs (GetElementKey): sacrifice
850 one test to get another working. Return a valid key even if the
851 element is not in this collection.
852 (get_ThrowOnDuplicate): return false.
854 * ConfigurationElementCollection.cs (BaseAdd): if we're adding an
855 element with the same key, overwrite the old one (remove the old
856 one after inserting the new one). Also, re-enable the throwing of
857 exceptions if ThrowOnDuplicate == true.
859 2005-10-24 Chris Toshok <toshok@ximian.com>
861 * AppSettingsSection.cs (Settings): fix ConfigurationProperty
864 * ProtectedConfigurationSection.cs (Providers): same.
866 2005-10-12 Chris Toshok <toshok@ximian.com>
868 * ConfigurationPermission.cs: flesh out as per tests.
870 2005-10-11 Chris Toshok <toshok@ximian.com>
872 * ConfigurationProperty.cs: don't use null to mean no default
873 value, use NoDefaultValue.
875 2005-10-11 Chris Toshok <toshok@ximian.com>
877 * KeyValueConfigurationCollection.cs (GetElementKey): duh.
878 BaseGet calls GetElementKey, so we were hitting an infinite
879 recursion here. Use BaseIndexOf instead.
881 2005-10-07 Chris Toshok <toshok@ximian.com>
883 * InternalConfigurationHost.cs: some interface work, adding in the
886 * ConfigurationProperty.cs: remove debug spew.
888 * Configuration.cs: add NIE'd NamespaceDeclared property.
890 * ElementInformation.cs: add NIE'd Errors property.
892 * PropertyInformationCollection.cs: add NIE'd GetObjectData().
894 * ConfigurationManager.cs: quite a bit of new work here. Some
895 definie TODO's still though.
897 2005-10-07 Chris Toshok <toshok@ximian.com>
899 * ConfigurationErrorsException.cs (.ctor): for the (string)
900 overload, chain up to the base (string) ctor.
902 2005-10-07 Chris Toshok <toshok@ximian.com>
904 * ConfigurationElement.cs (ElementMap.ReflectProperties): make
905 sure the type of the default value is compatible with that of the
906 property itself, and throw ConfigurationErrorsException if they
907 don't match. Fixes t12.
909 2005-10-07 Chris Toshok <toshok@ximian.com>
911 * ConfigHelper.cs: remove some unused code.
913 * ConfigurationProperty.cs: disambiguate the ctor we chain to.
915 * ConfigurationElement.cs (ElementProperty): implement.
916 (ElementMap.ReflectProperties): make DefaultValidator the default
919 2005-10-06 Chris Toshok <toshok@ximian.com>
921 * KeyValueConfigurationElement.cs: uncomment out some stuff.
922 (Properties): just return base.Properties. Not sure why they
923 override this, as the base class's implementation passes our test.
925 * KeyValueConfigurationCollection.cs (Add): for the keyValue
926 overload, call keyValue.Init as the unit test stack traces
927 indicates that'9s where it's called. For the string,string
928 overload, just call the keyValue overload instead of calling
930 (CreateNewElement): just use the name/value ctor, and specify ""
932 (GetElementKey): this function always returns "" for elements that
933 haven't been added to the collection. Once theyre added, it seems
934 to always return keyValue.Key.
935 (Properties): the unit tests show this returns a 0 length
938 2005-10-05 Chris Toshok <toshok@ximian.com>
940 * ConfigurationPermissionAttribute.cs: stub out.
942 2005-10-05 Chris Toshok <toshok@ximian.com>
944 * TimeSpanMinutesOrInfiniteConverter.cs: fill in the
947 2005-10-05 Chris Toshok <toshok@ximian.com>
949 * TimeSpanSecondsConverter.cs: new implementation.
951 2005-10-05 Chris Toshok <toshok@ximian.com>
953 * TimeSpanMinutesConverter.cs: flesh out implementation.
955 * ConfigurationConverterBase.cs: make all subclasses work with
956 strings only, since that's what seems to manifest itself in the
959 2005-10-05 Chris Toshok <toshok@ximian.com>
961 * ConfigurationLockCollection.cs: add NIE'd AttributeList
964 * ConfigurationConverterBase.cs: add MonoTODO'd CanConvertFrom and
965 CanConvertTo methods.
967 * ConfigurationSectionGroup.cs: add NIE'd IsDeclared property.
969 * ProtectedConfigurationSection.cs: add NIE'd properties.
971 * ConfigurationElementCollection.cs: add MonoTODO'd IsReadOnly
972 and SetReadOnly methods, and have then chain up to the base class.
974 * KeyValueConfigurationCollection.cs: add the class level
975 ConfigurationCollectionAttribute, and add a NIE'ed Properties
978 * ProviderSettingsCollection.cs: add the class level
979 ConfigurationCollectionAttribute, and add a "new" keyword to the
980 this property. Also, nuke the Provider's property.
982 * SectionInformation.cs: add some NEI'd properties.
984 * ConfigurationSection.cs (ResetModified): leave the MonoTODO, but
985 chain up to base class's method instead of throwing NIE.
987 * ConnectionStringSettingsCollection.cs: add the class-level
988 ConfigurationCollectionAttribute, and add the unimplemented
991 * ConfigurationErrorsException.cs: flesh this out, and add a
992 pragma to disable the obsolete warnings from our base class.
994 * ProviderSettings.cs: add unimplemented Properties property.
996 * ConfigurationElement.cs: remove unnecessary
997 EvaluationInformation.
999 * InternalConfigurationRoot.cs: add unimplemented IsDesignTime
1002 * ConfigurationProperty.cs: add a missing ctor.
1004 * AppSettingsSection.cs: add missing "override" keyword.
1006 * ConnectionStringsSection.cs: remove override.
1008 * ConfigurationSectionCollection.cs: AllKeys -> Keys, and add
1009 unimplemented GetObjectData override.
1011 * ConfigurationSectionGroupCollection.cs: same.
1013 * ConfigurationCollectionAttribute.cs: add missing CollectionType
1016 2005-10-05 Chris Toshok <toshok@ximian.com>
1018 * ConfigurationPermission.cs: new implementation.
1020 * IgnoreSection.cs: new implementation.
1022 2005-10-05 Chris Toshok <toshok@ximian.com>
1024 * CommaDelimitedStringCollection.cs: new implementation.
1026 2005-10-05 Chris Toshok <toshok@ximian.com>
1028 * NameValueConfigurationCollection.cs: new implementation.
1030 * NameValueConfigurationElement.cs: new implementation.
1032 2005-10-05 Chris Toshok <toshok@ximian.com>
1034 * ValidatorCallback.cs: new implementation.
1036 * SubclassTypeValidator.cs, SubclassTypeValidatorAttribute.cs: new
1039 * CallbackValidator.cs, CallbackValidatorAttribute.cs: new
1042 * RegexStringValidator.cs, RegexStringValidatorAttribute.cs: new
1045 * LongValidator.cs, LongValidatorAttribute.cs: new implementation.
1047 * IntegerValidator.cs, IntegerValidatorAttribute.cs: new
1050 * DefaultValidator.cs: new implementation.
1052 2005-09-28 Chris Toshok <toshok@ximian.com>
1054 * ConfigurationElementCollection.cs: more work on the "<clear />"
1055 handling - just skip the element for now. this causes a failure
1056 in one test ('<clear hi="bye" />' doesn't throw an exception when
1057 it should), but it succeeds for collections that have required
1060 * ConnectionStringSettings.cs: providerName isn't a required
1063 * AppSettingsSection.cs (.cctor): initialize our "file" Property.
1066 (GetRuntimeObject): call the base class method instead of just
1069 * ConnectionStringsSection.cs: Add a hacky DeserializeElement
1070 method here (that isn't in MS's) for the time being so we actually
1071 deserialize our collection.
1073 2005-09-28 Chris Toshok <toshok@ximian.com>
1075 * KeyValueInternalCollection.cs: found this by way of a stack
1076 trace in one of the tests. A NameValueCollection that wraps a
1077 KeyValueConfigurationCollection.
1079 * Configuration.cs (Init): save off configPath.
1080 (EvaluationContext): new, mostly implemented.
1081 (GetSectionInstance): use IgnoreSection instead of
1083 (Load): don't fail when we can't load a file.
1085 * IgnoreSection.cs: replace RuntimeOnlySection with this new
1088 * RuntimeOnlySection.cs: nuke.
1090 2005-09-27 Chris Toshok <toshok@ximian.com>
1092 * TimeSpanMinutesOrInfiniteConverter.cs: this is sealed.
1094 2005-09-27 Chris Toshok <toshok@ximian.com>
1096 * ConfigurationProperty.cs: add IsDefaultCollection property.
1098 2005-09-27 Chris Toshok <toshok@ximian.com>
1100 * ConfigurationElementProperty.cs: new file.
1102 * ConfigurationLockCollection.cs: new file.
1104 * ConfigurationElementCollection.cs
1105 (OnDeserializeUnrecognizedElement): make sure we consume the
1106 <clear /> element so we don't into an endless loop.
1108 * ConfigurationElement.cs: add a bunch of NIE's properties.
1110 * ContextInformation.cs: Add NIE'ed IsMachineLevel property.
1112 2005-09-23 Chris Toshok <toshok@ximian.com>
1114 * AppSettingsSection.cs: fix build and add a couple of TODO'ed
1117 2005-09-23 Chris Toshok <toshok@ximian.com>
1119 * ProviderSettings.cs (Unmerge): track change to
1120 ConfigurationElement.Unmerge.
1122 * ConfigurationSection.cs: add functions nuked from
1123 ConfigurationElement here.
1125 * ConfigurationElementCollection.cs: add DebuggerDisplay attribute
1127 (BaseGetAllKeys): returns object[], not string[].
1128 (BaseGetKey): returns object, not string.
1129 (Unmerge): track change to ConfigurationElement.Unmerge signature.
1131 * ConfigurationElement.cs (ConfigurationElement.Unmerge): fix
1132 signature (drop the serializeCollectionKey parameter).
1135 2005-09-23 Chris Toshok <toshok@ximian.com>
1137 * StringValidator.cs: throw ArgumentException instead of
1138 ConfigurationErrorsException.
1140 2005-09-23 Chris Toshok <toshok@ximian.com>
1142 * ConnectionStringsSection.cs: track change to
1143 ConfigurationPropertyOptions.
1145 * ConfigurationPropertyAttribute.cs, ConfigurationProperty.cs,
1146 ProviderSettings.cs: track change to ConfigurationPropertyOptions.
1148 * ConnectionStringSettings.cs: track change to
1149 ConfigurationProprertyOptions, and add some ConfigurationProperty
1152 * ConfigurationPropertyOptions.cs: DefaultCollection ->
1153 IsDefaultCollection, Required -> IsRequired.
1155 2005-09-22 Chris Toshok <toshok@ximian.com>
1157 * PositiveTimeSpanValidator.cs: this lives in
1158 System.Web.Configuration, not System.Configuration.
1160 2005-09-22 Chris Toshok <toshok@ximian.com>
1162 * TimeSpanValidator.cs: change to ArgumentException and alter the
1165 2005-09-22 Chris Toshok <toshok@ximian.com>
1167 * ExeConfigurationFileMap.cs (ctor): init all the strings to "".
1169 2005-07-01 Lluis Sanchez Gual <lluis@novell.com>
1171 * ProviderSettings.cs: Implemented properties using property attributes.
1172 * ConfigurationElement.cs: Implemented ElementInformation property and
1173 moved there all value management.
1174 * ProtectedConfigurationProvider.cs: Set the correct base class.
1175 * SectionInformation.cs: Added missing AllowExeDefinition property.
1176 * TimeSpanValidatorAttribute.cs: Implemented.
1177 * StringValidator.cs: Implemented.
1178 * ProviderSettingsCollection.cs: Added missing class attribute.
1179 * ConfigurationSaveMode.cs: Fix enum values.
1180 * ConfigurationElementCollection.cs: Added Init method for initializing
1181 elements from properties.
1182 * StringValidatorAttribute.cs: Implemented.
1183 * ConfigurationLocation.cs: Added support for allowOverride flag.
1184 * TimeSpanMinutesOrInfiniteConverter.cs: Created skeleton class.
1185 * PositiveTimeSpanValidator.cs: Implemented.
1186 * TimeSpanMinutesConverter.cs: Created skeleton class.
1187 * SectionInfo.cs: Properly read, store and check the values of AllowLocation,
1188 AllowDefinition and AllowExeDefinition.
1189 * TimeSpanValidator.cs: Implemented.
1190 * ConfigurationConverterBase.cs: Created skeleton class.
1191 * InternalConfigurationHost.cs: Implemented IsDefinitionAllowed and
1192 VerifyDefinitionAllowed.
1193 * ConfigurationManager.cs: That class must be static.
1194 * PropertyInformationCollection.cs: Implemented.
1195 * Configuration.cs: Added some checks for AllowLocation, AllowDefinition and
1196 so on. In Save(), don't forget to save location elements.
1197 * ConfigurationProperty.cs: Keep track of collection attributes.
1198 * ConfigInfo.cs: Support overrideAllowed flag.
1199 * KeyValueConfigurationElement.cs: Define properties using attributes.
1200 * PropertyValueOrigin.cs: implemented.
1201 * PropertyInformation.cs: Mostly implemented.
1202 * SectionGroupInfo.cs: Properly propagate the overrideAllowed flag.
1203 * ElementInformation.cs: Mostly implemented.
1204 * ConfigurationPropertyAttribute.cs: Set the correct default value.
1205 * ConfigurationCollectionAttribute.cs: Implemented.
1207 2005-06-23 Lluis Sanchez Gual <lluis@novell.com>
1209 * SectionInfo.cs: Set the config host when loading the section.
1210 * InternalConfigurationHost.cs: Implemented some basic methods.
1211 * Configuration.cs: Find the correct parent for the configuration,
1212 taking into accound locations and such. Use Host functions to get
1214 * ConfigurationLocationCollection.cs: Added find method.
1215 * ConfigInfo.cs: Added Host property.
1216 * InternalConfigurationFactory.cs: The InitForConfiguration calls
1217 are now done in each correspoding configuration.
1218 * SectionGroupInfo.cs: When reading a location element, create
1219 a Configuration object for each path specified in the location.
1220 * ConfigurationElementCollection.cs: Added the CreateNewElementInternal
1221 method, which properly initializes the created element.
1222 * ConfigurationLocation.cs: OpenConfiguration now has to read the
1223 xml contents. It also has to find the correct parent configuration,
1224 if it has not been specified.
1226 2005-06-17 Lluis Sanchez Gual <lluis@novell.com>
1228 * SectionInfo.cs, ConfigInfo.cs, SectionGroupInfo.cs: Minor api fixes.
1229 * ConfigurationPropertyCollection.cs: Added Clear method.
1230 * ContextInformation.cs: Implemented.
1231 * ConfigurationManager.cs: Implemented some missing methods.
1232 Configuration objects are now created through the ConfigurationFactory.
1233 * InternalConfigurationHost.cs: Implementation of IInternalConfigHost
1234 to be used for exe files and machine.config.
1235 * ConfigurationFileMap.cs: Implemented.
1236 * Configuration.cs: Read and write config files using the methods that
1237 IInternalConfigHost provides.
1238 * InternalConfigurationRoot.cs: IInternalConfigRoot stub.
1239 * ExeContext.cs: Implemented.
1240 * AppSettingsSection.cs: Use the KeyValueConfigurationCollection
1241 collection to store values.
1242 * KeyValueConfigurationElement.cs: Implemented.
1243 * KeyValueConfigurationCollection.cs: Implemented.
1244 * InternalConfigurationFactory.cs: An implementation of
1245 IInternalConfigConfigurationFactory.
1246 * ConfigurationPropertyAttribute.cs: Added missing attributes.
1247 * ExeConfigurationFileMap.cs: Implemented.
1249 2005-06-15 Lluis Sanchez Gual <lluis@novell.com>
1251 * ConfigurationElement.cs, ConfigurationErrorsException.cs
1252 SectionInfo.cs, ConnectionStringSettingsCollection.cs,
1253 ConfigurationPropertyCollection.cs, ProtectedConfigurationProvider.cs,
1254 ConfigurationSection.cs, NonEmptyStringConfigurationProperty.cs,
1255 ConfigurationElementCollectionType.cs, Configuration.cs,
1256 ConnectionStringSettings.cs, ConfigurationProperty.cs,
1257 ConfigurationLocationCollection.cs, TimeSpanConfigurationProperty.cs,
1258 ConfigurationAllowDefinition.cs, ConfigInfo.cs,
1259 ConfigurationSectionGroupCollection.cs, AppSettingsSection.cs,
1260 ProviderSettingsCollection.cs, IntegerConfigurationProperty.cs,
1261 SectionGroupInfo.cs, ConfigurationUserLevel.cs,
1262 ConnectionStringsSection.cs, ConfigurationPropertyAttribute.cs,
1263 ConfigurationLocation.cs, ConfigurationSectionCollection.cs,
1264 ConfigurationSectionGroup.cs, RuntimeOnlySection.cs,
1265 ProviderSettings.cs:
1268 * ConfigurationElementCollection.cs: Implemented support for Basic
1269 collection type. Other fixes.
1271 * ConfigurationPropertyFlags.cs: Renamed to ConfigurationPropertyOptions.
1272 * ConfigurationUpdateMode.cs: Renamed to ConfigurationSaveMode.
1274 * SectionInformation.cs, ConfigurationAllowExeDefinition.cs
1275 ConfigurationManager.cs, ConfigurationSaveMode.cs,
1276 ConfigurationValidatorAttribute.cs, ProtectedConfigurationSection.cs,
1277 ConfigurationValidatorBase.cs, ConfigurationPropertyOptions.cs:
1280 * ConfigurationValidationAttribute.cs: Removed.
1282 * ProviderBase.cs: Moved to System.dll.
1284 2005-06-14 Lluis Sanchez Gual <lluis@novell.com>
1286 * AppSettingsSection.cs, ConfigInfo.cs, Configuration.cs
1287 ConfigurationAllowDefinition.cs, ConfigurationElement.cs
1288 ConfigurationElementCollection.cs, ConfigurationElementCollectionType.cs
1289 ConfigurationLocation.cs, ConfigurationLocationCollection.cs
1290 ConfigurationProperty.cs, ConfigurationPropertyAttribute.cs
1291 ConfigurationPropertyCollection.cs, ConfigurationPropertyFlags.cs
1292 ConfigurationSection.cs, ConfigurationSectionCollection.cs
1293 ConfigurationSectionGroup.cs, ConfigurationSectionGroupCollection.cs
1294 ConfigurationUpdateMode.cs, ConfigurationUserLevel.cs
1295 ConfigurationValidationAttribute.cs, ConnectionStringsSection.cs
1296 ConnectionStringSettingsCollection.cs, ConnectionStringSettings.cs
1297 IntegerConfigurationProperty.cs, NonEmptyStringConfigurationProperty.cs
1298 NonEmptyStringFlags.cs, PathLevel.cs, ProtectedConfigurationProvider.cs
1299 ProviderBase.cs, ProviderSettings.cs, ProviderSettingsCollection.cs
1300 RuntimeOnlySection.cs, SectionInfo.cs, SectionGroupInfo.cs
1301 TimeSpanConfigurationProperty.cs, TimeSpanPropertyFlags.cs
1302 TimeSpanSerializedFormat.cs:
1304 Moved from the System assembly.