Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить проблему, из-за которой невозможно создать проект на основе платформа .NET Framework в Visual Studio.
Исходная версия продукта: платформа .NET Framework 4.5
Исходный номер базы знаний: 2956788
Симптомы
Рассмотрим следующий сценарий:
У вас есть приложение, созданное с помощью проекта на основе платформа .NET Framework 4.0 в Microsoft Visual Studio.
Это приложение имеет элемент activeX Visual Basic 6.0.
Этот элемент управления ссылается на основной файл сборки взаимодействия Office. Например, файл office.dll.
Вы повторно нацелите проект на платформа .NET Framework 4.5.x в Visual Studio.
В этом сценарии при сборке проекта эта программа сборки не может загрузить сборку взаимодействия для элемента управления. Кроме того, вы получите сообщение об ошибке, похожее на следующее:
Ошибка AxImp: не удается разрешить зависимость сборке office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce11e9429c, так как она не была предварительно загружена. При использовании API ReflectionOnly зависимые сборки должны быть предварительно загружены или загружены по запросу через событие ReflectionOnlyAssemblyResolve.
Замечание
Эта проблема возникает только на компьютере с платформа .NET Framework 4.0, платформа .NET Framework 4.5 или платформа .NET Framework 4.5.1 и установленным продуктом Microsoft Office.
Причина
Эта проблема возникает из-за изменения структуры между средой CLR 2.0 и CLR 4.0 о том, как загружаются библиотеки типов и зависимости.
Для платформа .NET Framework 4.0 необходимо загрузить определенные сборки при разрешении типов из библиотеки типов, ссылающейся на основную сборку взаимодействия. Однако это не так в платформа .NET Framework 2.0. Импорт ActiveX не изменил поведение между платформа .NET Framework 2.0 и Платформой 4.0. Это изменение структуры предотвращает создание сборок взаимодействия. Поэтому, когда импорт ActiveX выполняется в Visual Studio, импорт не может разрешать и предварительно загружать все ссылки для этого элемента activeX.
Обходной путь
Чтобы обойти эту проблему, создайте сборки взаимодействия с помощью AxImp.exe. Например, сообщение об ошибке, указанное в разделе "Симптомы ", указывает, что требуемая сборка Microsoft Office — версия 12.0. Проблему можно устранить следующим способом.
Найдите необходимую сборку Office в глобальном кэше сборок (GAC).
Выберите путь к версии Office, указанной в сообщении об ошибке. Это будет что-то вроде
C:\Windows\assembly\GAC\office\12.0.0.0__71e9bce111e9429c
.Выполните следующую команду из командной строки Visual Studio, чтобы создать новые сборки взаимодействия:
aximp < **Name of Ocx** > /out: < **Interop assembly name** > /rcw: <C:\Windows\assembly\GAC\office\12.0.0.0__71e9bce111e9429c\office.dll>
Добавьте созданные сборки взаимодействия в проект Visual Studio с помощью
Add References
функции.
Замечание
Если основная сборка взаимодействия Office не установлена на компьютере, средство AxImp.exe по-прежнему может разрешать типы без какой-либо помощи, даже если он выполняется из процесса сборки Visual Studio.
Дополнительные сведения
AxImp.exe — это средство командной строки и доступно в Visual Studio. Это средство принимает ссылочные сборки в качестве аргументов командной строки. Поэтому это средство может загрузить дополнительные сборки, ожидаемые платформа .NET Framework 4.0.