РЕДАКТИРОВАТЬ: В EL 6.0 больше нет зависимости Unity больше. На момент последнего редактирования (август 2013) Unity 3 был текущим продуктом. Единица 3.0
Некоторые из советов, приведенных ниже относительно редактора App.config для EL, по-прежнему полезны.Также показаны некоторые изменения кода для el5 к el6.
Вот моя попытка прояснить ситуацию.ошибка el5.0 Пример ошибки
Не удалось разрешить зависимость, type = "Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter", name = "(none)",Исключение произошло во время: при разрешении.Исключение: InvalidOperationException. Тип LogWriter не может быть создан.Вы должны сконфигурировать контейнер для предоставления этого значения.
Краткое содержание: Unity не может видеть библиотеки или Unity не может найти записи app.config, записи конфигурации приложениянеполный для используемой библиотеки, или есть некоторые проблемы с таргетингом.Обратите внимание на все эти моменты.
Сайт загрузки Enterprise Library 6 Загрузите файл vsix
Microsoft.Practices.EnterpriseLibrary.ConfigConsoleV6.vsix
вы используете это для правильного редактирования файла app.config.
Все еще используете nuget для установки пакетов, НО вам нужна вышеуказанная загрузка для правильного редактирования файла app.config
PM > Install-Package EnterpriseLibrary.Logging
PM> Install-Package EnterpriseLibrary.Common
Pm> Install-Package Unity
PM> Install-Package EnterpriseLibrary.ExceptionHandling
Естьеще несколько ENT библиотек, которые могут вас заинтересовать. http://nuget.org/packages?q=entlib
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Unity;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.Unity;
using Microsoft.Practices.Unity; // << SEPARATE since EL6 , unity 3 has own install.
public class abc
{
/// <summary>
/// Unity Container with key dependencies registered
/// </summary>
public static UnityContainer UC { get; private set; }
private static IUnityContainer _IUContainer;// not sure if this is needed
public static LogWriter LogWtr;
public static ExceptionManager ExcMgr;
/// <summary>
/// Controller Bootstrap to manage as singleton via static properties and therefore ONLY 1 Unity Container
/// </summary>
static bootstrap()
{
UC = new UnityContainer(); // one container per work process. managing and resolving dependencies
// DO NO DO THIS WITH NEW VERSION OF Enterprise LIBRARY this was v5, v6 does not need this
// now we tell unity about the container manager inside EntLib.
// we dont want 2 containers, so we tell UNity look after EntLib as well please
// UC.AddNewExtension<EnterpriseLibraryCoreExtension>();
//No need to add The extensions individually.
//no longer required and indeed Library documents this as obselete
// UC.AddNewExtension<LoggingBlockExtension>();**
//================ END OF OLD V5 approach ========================
LogWtr = UC.Resolve<LogWriter>();
ExcMgr = UC.Resolve<ExceptionManager>();
// other initializations here
}
}
Используйте загруженную консоль конфигурации, т.е. VSIX.щелкните правой кнопкой мыши на app.config.
![EntLib Config Console](https://i.stack.imgur.com/KWUBO.jpg)
В файле APP.CONFIG должен быть раздел с используемыми библиотеками ENtLibraries.Необходимо убедиться, что в веб-конфигурации app.config запущенного проекта есть записи. Добавляются записи, когда вы используете консоль библиотеки Enterprise для настройки ведения журнала или обработки исключений.
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />