Я создаю веб-приложение на платформе .NET 4.0 (бета2) в C #.
Когда я пытаюсь использовать сборку под названием «ActiveHomeScriptLib», я получаю следующую ошибку:
Тип взаимодействия ActiveHomeScriptLib.ActiveHomeClass не может быть встроен. Вместо этого используйте соответствующий интерфейс.
Когда я меняю фреймворк на версию 3.5, у меня не возникает никаких ошибок.
Что такое тип взаимодействия и почему это происходит только при использовании платформы 4.0?
Ответы:
.NET 4.0 позволяет встроить основные сборки взаимодействия (точнее, нужные вам биты) в вашу сборку, чтобы вам не нужно было развертывать их вместе с приложением.
По какой-то причине эта сборка не может быть встроена - но, похоже, это не проблема для вас. Просто откройте вкладку «Свойства» для сборки в Visual Studio 2010 и установите для «Встроить типы взаимодействия» значение «Ложь».
РЕДАКТИРОВАТЬ: См. Также ответ Майкла Густуса , удалив
Class
суффикс из типов, которые вы используете.источник
embed interop types
свойстваfalse
сделала свое дело. В моем случае - я работал сMicrosoft.Office.Interop.Excel
библиотекой и мне нужно было получить доступ к объекту Workbook. Использование его интерфейсаWorkbook
(кстати, соглашение об именовании ...) не было вариантом - я получилCOM object
, а не желаемыйMicrosoft.Office.Interop.Excel.WorkbookClass
В большинстве случаев эта ошибка является результатом кода, который пытается создать экземпляр COM-объекта. Например, вот фрагмент кода, запускающий Excel:
Как правило, в .NET 4 вам просто нужно удалить суффикс 'Class' и скомпилировать код:
Объяснение MSDN здесь .
источник
Как Ян Мне потребовалось некоторое время, чтобы получить это .. = S Так что для всех, кто ослеплен разочарованием.
источник
Вот где можно установить Embed Interop в Visual Studio 2012
источник
Расширение на правильный ответ Джона.
Проблема здесь в том, что вы комбинируете новую функцию «Embed Interop Types» (или NoPIA) с использованием типа класса. Функция «Embed Interop Types» работает, по сути, статически связывая все типы из PIA (Primary Interop Assembly) со ссылочной сборкой, устраняя накладные расходы на ее развертывание.
Эта функция отлично работает для большинства типов в PIA, но у нее есть ограничения. Одним из них является то, что вы не можете вставлять классы (это проблема обслуживания). У Миши есть подробная статья в блоге о том, почему это запрещено
источник
Получил решение
Перейти к ссылкам правой кнопкой мыши на нужной DLL, вы получите вариант «Вставить типы взаимодействия» на «Ложь» или «Истина».
источник
Я столкнулся с этой проблемой при переносе проекта TFS на мою локальную машину. Предположительно, это работало отлично на машине парня, который написал это. Я просто изменил это ...
К этому...
Теперь он работает как чемпион!
источник
У меня была такая же проблема в VB.NET 2013 с Office 2007, и это решило ее:
VS 2013 VB.NET Project> Реквизиты> Ссылки> Microsoft Word 12.0 Object Lib> Встраивать типы взаимодействия: изменить True на False
источник
http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307
Эта ошибка возникает из-за того, что по умолчанию установлено значение true для свойства Embed Interop Types сборки InterStand API Interop, указанной в новом проекте. Чтобы устранить эту ошибку, измените значение свойства Embed Interop Types на False, выполнив следующие действия: Выберите ссылку на TestStand Interop Assembly в разделе ссылок вашего проекта в обозревателе решений. Найдите свойство Embed Interop Types в обозревателе свойств и измените значение на False.
источник
Visual Studio 2017 версии 15.8 позволила использовать синтаксис PackageReferences для ссылки на пакеты NuGet в проектах Visual Studio Extensibility (VSIX). Это значительно упрощает рассуждение о пакетах NuGet и открывает возможность для получения полного метапакета, содержащего весь VSSDK.
Установка ниже NuGet пакета решит проблему EmbedInteropTypes .
источник