Dans Visual Studio, lors de l'ajout d'une référence au projet, la fenêtre des propriétés a une option Embed Inteop Types
, devons-nous la définir sur True
ou False
? Quelle est la différence?
Puisque nous avons beaucoup de projets, parmi certains, il a été fait référence à False
, d'autres ont été mis en place True
, c'est totalement gâché. Et le serveur bulid a également les mêmes avertissements:
Que signifie «référence a été créée à l'assemblage d'interopérabilité intégré»?
Nous avons donc l' intention de changer tout le Embed Inteop Types
pour False
, quel risque irions - nous?
c#
visual-studio
Jerry Bian
la source
la source
false
ou de ne jamais les modifier (par exemple, s'ils sontfalse
déjà par défaut )?Réponses:
Cette option a été introduite afin de supprimer le besoin de déployer de très grands PIA (Primary Interop Assemblies) pour l'interopérabilité.
Il incorpore simplement le code de pontage géré utilisé qui vous permet de parler à des assemblys non gérés, mais au lieu de tout incorporer, il ne crée que les éléments que vous utilisez réellement dans le code.
Pour en savoir plus, consultez l'article de blog de Scott Hanselman à ce sujet et d'autres améliorations VS ici .
Quant à savoir si cela est conseillé ou non, je ne suis pas sûr car je n'ai pas besoin d'utiliser cette fonctionnalité. Une recherche rapide sur le Web donne quelques pistes:
Le seul risque de les transformer tous en faux est davantage de problèmes de déploiement avec les fichiers PIA et un déploiement plus important si certains de ces fichiers sont volumineux.
la source
J'ai remarqué que lorsqu'il est défini sur false, je peux voir la valeur d'un élément à l'aide du débogueur. Lorsqu'il était défini sur true, j'obtenais une erreur - item.FullName.GetValue Le type d'interopérabilité intégré 'FullName' ne contient pas de définition pour 'QBFC11Lib.IItemInventoryRet' car il n'a pas été utilisé dans l'assemblage compilé. Envisagez de convertir en objet ou de changer la propriété "Embed Interop Types" sur true.
la source