On a build machine that works with Visual Studio Pro 2013 12.0.21005.1, I have a unit test project that was unable to read the App.config file correctly (if at all). The following returns null:
System.Configuration.ConfigurationManager.GetSection( "loggingConfiguration" )
Unable to read only the logging configuration section; any attempt to read any section results in a null value.
On my laptop running Visual Studio Pro 2013 12.0.31101.00 Update 4, the unit test project reads App.config perfectly, and the call above returns the expected object.
My XML looks like this:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
<section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<loggingConfiguration name="" tracingEnabled="false" defaultCategory="Verbose" logWarningsWhenNoCategoriesMatch="false">
<listeners>
<add name="Event Log Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" source="MyCompany" formatter="Text Formatter" log="Application" />
<add name="Rolling Flat File Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fileName="Service.log" formatter="Text Formatter" rollFileExistsBehavior="Increment" rollInterval="Day" />
<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" type="MyCompany.Core.Instrumentation.ConsoleTraceListener, MyCompany.Core" formatter="Debug Formatter" traceOutputOptions="None" name="Debug Console Listener" />
</listeners>
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Timestamp: {timestamp(local)}{newline}
Title: {title}{newline}
Message: {message}{newline}
Severity: {severity}{newline}
Priority: {priority}{newline}
Categories: {category}{newline}
EventId: {eventid}{newline}
Machine: {localMachine}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Thread Name: {threadName}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}" name="Text Formatter" />
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="{timestamp(local:FixedFormatUSDate)} {timestamp(local:FixedFormatTime)} [{severity} P{priority} T{win32ThreadId}/'{threadName}'] {title}: {message} [{category}]" name="Debug Formatter" />
</formatters>
<logFilters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.CategoryFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" categoryFilterMode="AllowAllExceptDenied" name="Category Filter">
<categoryFilters>
</categoryFilters>
</add>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.PriorityFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" maximumPriority="4" name="Priority Filter" />
</logFilters>
<categorySources>
<add switchValue="Information" name="MyCompany.Core.Configuration">
<listeners>
<add name="Event Log Listener" />
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
<add switchValue="All" name="ServiceExceptionPolicy">
<listeners>
<add name="Event Log Listener" />
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
<add switchValue="All" name="Critical">
<listeners>
<add name="Event Log Listener" />
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
<add switchValue="All" name="Error">
<listeners>
<add name="Event Log Listener" />
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
<add switchValue="All" name="Warning">
<listeners>
<add name="Event Log Listener" />
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
<add switchValue="All" name="Information">
<listeners>
<add name="Event Log Listener" />
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
<add switchValue="All" name="Verbose">
<listeners>
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="Off" name="All Events" />
<notProcessed switchValue="Off" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Rolling Flat File Listener" />
<add name="Debug Console Listener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>
<exceptionHandling>
<exceptionPolicies>
<add name="ServiceExceptionPolicy">
<exceptionTypes>
<add name="All Exceptions" type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" postHandlingAction="ThrowNewException">
<exceptionHandlers>
<add name="Logging Exception Handler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" logCategory="ServiceExceptionPolicy" eventId="100" severity="Error" title="Enterprise Library Exception Handling" formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling" priority="0" />
</exceptionHandlers>
</add>
</exceptionTypes>
</add>
</exceptionPolicies>
</exceptionHandling>
<dataConfiguration defaultDatabase="SOMEDATABASE" />
<connectionStrings>
</connectionStrings>
</configuration>
Does anyone know why this can happen in one environment, but not in another?