Я занимаюсь разработкой двух проектов, которыми управляет ClearCase, а это значит, что для Windows они выглядят так, как будто они находятся в общей сетевой папке.
Первый проект - это DLL, написанная с использованием VS 2003 на управляемом C ++ и предназначенная для предоставления управляемого интерфейса для некоторых устаревших DLL, написанных на VS2003 C ++.
Второй проект написан на C # (.NET 3.5, VS2008) и включает библиотеку DLL, сгенерированную первым проектом, в качестве ссылки для использования устаревших библиотек DLL через оболочку.
Теперь, когда я пытаюсь запустить проект C #, я получаю следующее сообщение об ошибке:
FileLoadException не обработано
Не удалось загрузить файл или сборку
'(моя управляемая оболочка c ++), Version = (версия
число), культура = нейтральная,
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 только для чтения, но это не так.
Заранее спасибо за любую помощь!
Обновление: я также попытался подписать обе сборки строгим именем и дать этим ключам полное доверие, но безрезультатно. Должна быть какая-то другая причина, но у меня нет идей.