Я разрабатываю два проекта, которыми управляет ClearCase, что означает, что для Windows похоже, что они расположены в общей сетевой папке.
Первый проект представляет собой DLL, написанную с использованием VS 2003 на управляемом C ++ и предназначенную для обеспечения управляемого интерфейса для некоторых устаревших библиотек DLL, написанных на VS2003 C ++.
Второй проект написан на C # (.NET 3.5, VS2008) и включает в себя DLL, сгенерированную первым проектом, в качестве ссылки для использования унаследованных библиотек DLL через оболочку.
Теперь, когда я пытаюсь запустить проект C #, я получаю следующее сообщение об ошибке:
FileLoadException не было обработано
Не удалось загрузить файл или сборку '(моя управляемая оболочка C ++), Version = (номер версии), Culture = нейтральный, PublicKeyToken = null' или одна из его зависимостей. В доступе отказано.
Если посмотреть на детали, это System.Io.FileLoadException, содержащее внутреннее System.UnauthorizedAccessException («Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))»
Теперь, когда я копирую проект C # на локальный жесткий диск, все работает нормально, даже если управляемый проект C ++ остается на сетевом диске.
Раньше у меня были проблемы с доступом к сетевым дискам, но они исчезли при обновлении до .NET 3.5 SP1. Я также попытался изменить набор разрешений для группы кода All_Code на «Полное доверие» для .Net Configuration 1.1. и 2.0, как предлагалось в Интернете, но это тоже не помогло. Кстати, я также проверил, доступна ли DLL только для чтения, но это не так.
Заранее благодарю за любую помощь!
Обновление: я также попытался подписать обе сборки строгим именем и предоставить этим ключам полное доверие, но безрезультатно. Должна быть какая-то другая причина, но у меня нет идей.