Для проекта моей команды недавно началась, я получаю следующее исключение при попытке запустить мои вновь созданный модульные тесты SpecFlow:Доступ запрещен на Iesi.Collections.dll
Could not load file or assembly 'Iesi.Collections, Version=1.0.1.0, Culture=neutral,
PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. Access is denied.
Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
.. .а C# фрагмент, который он отказы выглядит следующим образом:
private static ISessionFactory _sessionFactory;
// ... Further down in the class ...
public static void GenerateSchema()
{
_sessionFactory = Fluently.Configure(new Configuration().Configure())
.Mappings(m => m.FluentMappings.AddFromAssembly(typeof(DataContext).Assembly))
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
.BuildConfiguration()
.BuildSessionFactory();
}
... и журнал слияние выглядит следующим образом:
=== Pre-bind state information ===
LOG: User = Unknown
LOG: DisplayName = Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
(Fully-specified)
LOG: Appbase = file:///C:/Projects/SomeProject/SomeProject.FeatureTest/bin/Debug
LOG: Initial PrivatePath = NULL
Calling assembly : NHibernate, Version=3.3.1.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\SomeProject\FeatureTest\bin\Debug\SomeProject.FeatureTest.dll.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
LOG: Attempting download of new URL file:///C:/Projects/SomeProject/SomeProject.Web/bin/Debug/Iesi.Collections.DLL.
ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated.
я (и моя команда) в тупик на этом, потому что мы попытались следующие вещи:
- Проверьте права доступа папки на
packages
директории, где DLL живет - Убедитесь, что Iesi.Collections DLL копируется в bin \ Debug on build
- Проверьте, чтобы настройки NHibernate были нормальными (они соответствуют тем из проекта, который работает для меня)
- Повторно приобретен проект из TFS; так как я единственный человек, с которым это происходит, я подумал, что это может быть случай с поврежденным Get. Это не имело никакого эффекта. (Повторите покупку, я имею в виду, что я закрыл VS2012, удалил существующую папку, открыл новый экземпляр VS2012, Get> Advanced> Get Specific Version, с отмеченными отмеченными галочками.)
- Вручную повторное ассоциирование DLL из каталога
packages
к проекту C#. Нет эффекта. - Поскольку DLL имеет токен открытого ключа, я знаю, что DLL подписана - так что это тоже не так.
- Вышеприведенный код может быть исключен, поскольку эта точная строка была использована в двух других проектах для настройки локальных схем БД для целей модульного тестирования.
- Проверено, что DLL не заблокирована Windows, просмотрев Свойства; он не заблокирован.
- В журнале слияния я заметил, что он пытается загрузить DLL из веб-проекта, поэтому я добавил Iesi.Collections.dll в веб-проект; нет эффекта.
- Несмотря на то, что версия SpecFlow была 1.9.2, я заметил, что
Castle.Core
,NHibernate.ByteCode.Castle
иlog4net
отсутствуют, поэтому я добавил их в проект, который выполняет доступ к данным (C: \ Projects \ SomeProject \ SomeProject.Core); нет эффекта. (Добавлено потому, что они находятся в другом проекте, который I может запустить тесты функций, а это означает, что это именно это решение.) - Из-за некоторых других условий для других проектов я запускал VS2012 по умолчанию в качестве администратора; теперь, когда я в отчаянии, я попробовал отключить это и работать как я сам, ни к чему.
- Некоторые дополнительные исследования StackOverflow показали, что другой пользователь покорил подобную проблему, очистив их временные файлы Интернета, поэтому я загрузил CCleaner - никакого эффекта.
- Подробнее Исследование StackOverflow показало рассказ о парне, который мог решить свои проблемы с помощью скромного
iisreset
из командной строки; Я пробовал это, ни к чему.
Вопрос: Что вызывает Iesi.Collections.dll бросить Access Denied FileLoadException на инициализации NHibernate?
Вы пробовали 1 и 2 для всех зависимостей dll (при условии, что они есть)? – Cemafor
Я не знаю, какие именно зависимости у него есть; Я также разблокировал разрешения на папку bin для проекта, чтобы попытаться получить это за столом. (Конечно, нет эффекта.) Я убедился, что все DLL-файлы скопированы. –
'Я также ослабил разрешения на папку с папкой проекта '- это звучит немного странно для меня. – Rippo