Wenn Sie in Visual Studio einen Verweis auf das Projekt hinzufügen, hat das Eigenschaftenfenster eine Option Embed Inteop Types
. Sollten wir diese Option auf True
oder setzen False
? Was ist der Unterschied?
Da wir viele Projekte haben, von denen einige auf Bezug genommen wurden, auf die False
andere gesetzt wurden, True
ist es total durcheinander. Und der Bulid-Server hat auch die gleichen Warnungen:
Was bedeutet "Verweis auf eingebettete Interop-Assembly erstellt"?
Also haben wir alle zu ändern , den Plan Embed Inteop Types
zu False
würde, was Risiko bekommen wir?
c#
visual-studio
Jerry Bian
quelle
quelle
false
oder ändern (z. B. wenn sie standardmäßigfalse
bereits aktiviert sind )?Antworten:
Diese Option wurde eingeführt, um die Notwendigkeit zu beseitigen, sehr große PIAs (Primary Interop Assemblies) für Interop bereitzustellen.
Es wird einfach der verwendete verwaltete Bridging-Code eingebettet, mit dem Sie mit nicht verwalteten Assemblys kommunizieren können. Statt alles einzubetten, werden nur die Inhalte erstellt, die Sie tatsächlich im Code verwenden.
Lesen Sie mehr in Scott Hanselman Blog - Post über sie und andere VS Verbesserungen hier .
Ich bin mir nicht sicher, ob dies empfohlen wird oder nicht, da ich diese Funktion nicht verwenden muss. Eine schnelle Websuche liefert einige Hinweise:
Das einzige Risiko, sie alle auf false zu setzen, besteht in größeren Bedenken hinsichtlich der Bereitstellung von PIA-Dateien und einer größeren Bereitstellung, wenn einige dieser Dateien groß sind.
quelle
Ich habe festgestellt, dass ich den Wert eines Elements mithilfe des Debuggers anzeigen kann, wenn es auf false gesetzt ist. Als es auf true gesetzt wurde, wurde eine Fehlermeldung angezeigt - item.FullName.GetValue Der eingebettete Interop-Typ 'FullName' enthält keine Definition für 'QBFC11Lib.IItemInventoryRet', da er in der kompilierten Assembly nicht verwendet wurde. Ziehen Sie in Betracht, ein Objekt umzuwandeln oder die Eigenschaft 'Interop-Typen einbetten' in true zu ändern.
quelle