2016-02-02 4 views
0

При локальном создании и отладке моего приложения у меня нет проблем с протоколированием и использованием log4net; Однако, когда я делаю TFS сборки, я получаю следующее исключение:tfs build не найдет раздел конфигурации

log4net:ERROR Failed to find configuration section 'log4net' in the application's .config file. Check your .config file for the <log4net> and <configSections> elements. The configuration section should look like: <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 

Я пытался возиться с файлом AssemblyInfo.cs комментированием и раскомментировать эту строку:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

I «ве также попытался прокомментировать/раскомментируйте:

XmlConfigurator.Configure(); 

Мой конфигурационный файл:

<?xml version="1.0" encoding="utf-8"?> 

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 

    <appSettings> 
    <add key="Value" value="1.2.1.2" /> 
    <add key="log4net.Internal.Debug" value="true" /> 
    </appSettings> 
    <log4net> 


    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="C:\Users\ye\Desktop\Creator_.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyy-MM-dd'.log'" /> 
     <staticLogFileName value="false" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="DbAppender" type="log4net.Appender.ADONetAppender"> 
     <bufferSize value="0" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="Server=db-dev;database=daaaa;user id=daaaauser;password=2E8sads3453gfvsxdU9pbax6V9;persist security info=False;" /> 
     <commandText value="INSERT INTO log ([date],[thread],[level],[logger],[message],[exception]) VALUES  (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%t" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="10" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%p" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="1000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%c" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%m" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@exception" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
    </appender> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
     <appender-ref ref="DbAppender" /> 
    </root> 


    </log4net> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Magnum" publicKeyToken="b800c4cfcdeea87b" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.1.3.0" newVersion="2.1.3.0" /> 
     </dependentAssembly> 

     <dependentAssembly> 
     <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" /> 
     </dependentAssembly> 

     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 




    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

Что я делаю неправильно? Почему все работает нормально, но при построении с tfs он ломается?

+0

Вы должны проверить, используете ли вы другую конфигурацию сборки, чем ту, которую вы используете для сборки на локальном компьютере, а также вы должны проверить, присутствует ли сборка 'log4net' в двоичном каталоге вашего приложения/службы. –

ответ

2

1) Попробуйте проверить определение сборки, которое выполняет TFS Build, используя конфигурационный файл, который вы так считаете. то есть отладка vs release

2) Предполагаю, что вы получаете это исключение, когда ваша TFS-сборка запускает модульные тесты или запускает ваш код после его создания. Если это так, проверьте ваш файл .config, и dll log4net будут скопированы в каталог двоичных файлов вместе с вашим скомпилированным кодом.

Возможно, вам понадобится настроить тестовые параметры тестовых модулей для достижения того, чего вы хотите, и использовать конкретный файл TestSettings для вашей сборки TFS, отличный от той, что находится на вашем локальном ПК.

+0

вы правдивы об этом ...... Если это так, проверьте файл .config, а dll log4net будут скопированы в каталог двоичных файлов вместе с вашим скомпилированным кодом. ----------- похоже, что это может быть проблема! я не знаю, почему файлы не копируются –

+1

, может быть, ваш тестовый проект не ссылается на exe, в который встроен файл конфигурации. Или, возможно, вашему проектному модулю для тестирования требуется файл its.config. Часто бывает необходимо дать модульные тесты своим собственным файлам .config, чтобы содержать тестовые конкретные данные, такие как строки подключения к базам данных или более низкие/более высокие уровни регистрации log4net и т. Д. ... – Jon

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