W Visual Studio podczas dodawania jednego odwołania do projektu okno właściwości ma opcję Embed Inteop Types
, czy powinniśmy ustawić ją na True
czy False
? Co za różnica?
Ponieważ mamy wiele projektów, wśród niektórych z nich było odniesienie False
, inne były ustawione True
, jest to totalny bałagan. Serwer bulid również ma te same ostrzeżenia:
Co oznacza „utworzono odniesienie do osadzonego zestawu międzyoperacyjnego”?
Więc planujemy zmienić wszystko Embed Inteop Types
, aby False
to, co chcielibyśmy dostać ryzyko?
c#
visual-studio
Jerry Bian
źródło
źródło
false
lub nigdy ich nie zmieniaj (np. Jeśli sąfalse
już ustawione domyślnie )?Odpowiedzi:
Ta opcja została wprowadzona w celu wyeliminowania potrzeby wdrażania bardzo dużych zestawów PIA (Primary Interop Assemblies) na potrzeby współpracy międzyoperacyjnej.
Po prostu osadza zarządzany kod mostkujący, który pozwala rozmawiać z niezarządzanymi zestawami, ale zamiast osadzać to wszystko, tworzy tylko rzeczy, których faktycznie używasz w kodzie.
Przeczytaj więcej w poście na blogu Scotta Hanselmana o tym i innych ulepszeniach VS tutaj .
Co do tego, czy jest to zalecane, czy nie, nie jestem pewien, ponieważ nie muszę korzystać z tej funkcji. Szybkie wyszukiwanie w Internecie daje kilka potencjalnych klientów:
Jedynym ryzykiem obrócenia ich wszystkich na fałszywe jest więcej problemów związanych z wdrażaniem plików PIA i większe wdrożenie, jeśli niektóre z tych plików są duże.
źródło
Zauważyłem, że gdy jest ustawiony na false, jestem w stanie zobaczyć wartość elementu za pomocą debugera. Gdy była ustawiona na true, otrzymywałem błąd - item.FullName.GetValue Osadzony typ międzyoperacyjny „FullName” nie zawiera definicji „QBFC11Lib.IItemInventoryRet”, ponieważ nie był używany w skompilowanym zestawie. Rozważ rzutowanie na obiekt lub zmianę właściwości „Embed Interop Types” na true.
źródło