В Visual Studio при добавлении одной ссылки в проект в окне свойств есть параметр Embed Inteop Types
, следует ли установить его на True
или False
? Какая разница?
Так как у нас много проектов, среди некоторых из них была установлена ссылка, для False
других - все True
, это совершенно беспорядочно. И сервер Bulid также имеет такие же предупреждения:
Что означает «ссылка была создана на встроенную сборку взаимодействия»?
Таким образом , мы планируем изменить все , Embed Inteop Types
чтобы False
, какой риск мы хотели бы получить?
c#
visual-studio
Джерри Биан
источник
источник
false
или никогда не меняйте (например, если ониfalse
уже установлены по умолчанию )?Ответы:
Эта опция была введена для того, чтобы избавиться от необходимости развертывать очень большие PIA (первичные сборки взаимодействия) для взаимодействия.
Он просто встраивает используемый управляемый мостовой код, который позволяет вам общаться с неуправляемыми сборками, но вместо того, чтобы встраивать все это, он создает только то, что вы действительно используете в коде.
Подробнее в блоге Скотта Хансельмана об этом и других улучшениях VS здесь .
Что касается того, рекомендуется это или нет, я не уверен, поскольку мне не нужно использовать эту функцию. Быстрый поиск в Интернете дает несколько потенциальных клиентов:
Единственный риск превратить их все в ложные - это больше проблем с развертыванием файлов PIA и более масштабное развертывание, если некоторые из этих файлов большие.
источник
Я заметил, что когда для него установлено значение false, я могу видеть значение элемента с помощью отладчика. Когда было установлено значение true, я получал ошибку - item.FullName.GetValue. Встроенный тип взаимодействия «FullName» не содержит определения для «QBFC11Lib.IItemInventoryRet», так как он не использовался в скомпилированной сборке. Рассмотрите возможность приведения к объекту или изменение свойства Embed Interop Types на true.
источник