Невозможно вставить типы взаимодействия из сборки
Я знаю, что подобные вопросы задавались здесь раньше, но я не уверен, что они действительно решают мою проблему, если я не понимаю их.
Этим утром я работал над приложением, и у меня не было проблем со сборкой или перестройкой решения, но после того, как я пошел на обед и вернулся (я оставил программу открытой), я неожиданно не смог ее создать, так как она возвращаю 3 ошибки, подобных которым я раньше не встречал.
Ошибка 1:
Невозможно внедрить типы взаимодействия из сборки "office", так как в ней отсутствует атрибут ImportedFromTypeLib или атрибут PrimaryInteropAssembly.
Ошибка 2:
Невозможно внедрить типы взаимодействия из сборки 'office', так как в ней отсутствует атрибут Guid
Ошибка 3:
Невозможно загрузить указанную библиотеку "C:\WINDOWS\assembly\GAC_MSIL\Office\15.0.0.0__71e9bce111e9429c\Office.dll": системе не удается найти указанный файл. C:\WINDOWS\ сборка \ GAC_MSIL \ Office \ 15.0.0.0__71e9bce111e9429c \ office.dll
Что вызывает внезапное возникновение этих ошибок?
После проверки в Свойствах проекта> Справка> Добавить> COM, я вижу, что на библиотеку объектов Office 15.0 ссылаются. Так что мне делать? Просто кажется странным, что они появились, когда приложение было открыто?
4 ответа
Просто для того, чтобы это не было помечено для остальной части вечности и для любых потенциальных будущих пользователей с такой же проблемой, ответ будет такой, как предложили @soohoonigan и @TnTinMn:
- Очистите и восстановите решение.
- Если это не сработает, удалите ссылки и добавьте их снова.
Видя только ошибки 1 и 2, руководствуясь здесь ответами и дальнейшими исследованиями, я решил эту проблему:
Ссылки -> Microsoft.CSharp -> Свойства - измените "Встраивать типы взаимодействия" на "Ложь", а затем пересоберите.
Фактическая проблема заключается в том, что ссылка в вашем решении настроена на встраивание типов взаимодействия в целевую сборку! просто проверьте свойства ваших ссылок и установите для всех этих флагов значение false.
По умолчанию используется значение "истина", а не "ложь". Таким образом, удалив его и добавив его снова, вы устанавливаете его в "true".
Я считаю, что это не ответ. Возможно, вы пометили Embed Interop Types в окне свойств сборки как "true". Удаляя и добавляя ссылку, вы устанавливаете ее обратно в значение по умолчанию, которое является "ложным".