Ну, вы уже нашли ответ.Log4net зависит от System.Web.dll, сборки, которая недоступна в профиле клиента.Вероятной основной причиной этой зависимости является класс log4net.Appender.AspNetTraceAppender, он использует класс HttpContext, для которого требуется System.Web.
Прямо сейчас это необходимо знать из документации библиотеки или повыяснить это трудным путем.Сборка выдает предупреждение, но это только предупреждение, а не ошибка, которую легко пропустить:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1360,9): предупреждение MSB3253: не удалось разрешить указанную сборку «C: \ projects \ WindowsFormsApplication2 \ ClassLibrary1 \ bin \ Debug \ ClassLibrary1.dll», так как она зависит от «System.Web, Version = 4.0.0.0, Culture =нейтральный, PublicKeyToken = b03f5f7f11d50a3a ", который не входит в текущую целевую платформу" .NETFramework, Version = v4.0, Profile = Client ".Удалите ссылки на сборки, не входящие в целевую платформу, или рассмотрите возможность переориентации вашего проекта.
Вслед за ошибками любых операторов в вашем коде, которые пытаются ссылаться на классы в сборке, содержащей ссылку log4net.
C: \ projects \ WindowsFormsApplication2 \ WindowsFormsApplication2 \ Form1.cs (12,9): ошибка CS0246: не удалось найти тип или имя пространства имен 'ClassLibrary1' (отсутствует директива using илиссылка на сборку?)
Вы тоже не пропустите, и может быть много ошибок, если вы не строите пошагово при написании кода.Вы сосредотачиваетесь на ошибках и не поймете, что предупреждение является истинным источником ошибок.Еще одна неприятная ловушка заключается в том, что IntelliSense поначалу рад, что действительно правильно разрешает ссылку на сборку.Есть некоторые доказательства того, что предупреждение не всегда выдается, просто из-за того, что многие программисты его пропускают.Я еще не нашел сценарий, где это так.Точно сказать не могу.