Невозможно вставить типы взаимодействия из сборки

Я знаю, что подобные вопросы задавались здесь раньше, но я не уверен, что они действительно решают мою проблему, если я не понимаю их.

Этим утром я работал над приложением, и у меня не было проблем со сборкой или перестройкой решения, но после того, как я пошел на обед и вернулся (я оставил программу открытой), я неожиданно не смог ее создать, так как она возвращаю 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". Удаляя и добавляя ссылку, вы устанавливаете ее обратно в значение по умолчанию, которое является "ложным".

Другие вопросы по тегам