Mam zamiar użyć różnych obiektów, które są odsłonięte jako obiekty COM. Aby ułatwić ich używanie, chciałbym je zawinąć jako obiekty C#. Jakie jest najlepsze podejście do tego?Najlepszy sposób uzyskiwania dostępu do obiektów COM z C#
Odpowiedz
Jeśli biblioteka jest już zarejestrowana, można wykonać następujące kroki, aby mieć Visual Studio generuje zespół współdziałania dla Ciebie:
- Otwórz dla swojego projektu Visual Studio.
- Kliknij prawym przyciskiem myszy na "References" (tuż pod projektem w Eksploratorze rozwiązań) i wybierz "Add Reference".
- Wybierz kartę COM.
- Wybierz komponent, z którym chcesz współdziałać.
- Wybierz "OK".
To będzie klasa lub zbiór klas C#, które zawijają wszystkie elementy interfejsu COM z normalną klasą C#. Następnie po prostu użyj go jak każdej innej biblioteki C#. Jeśli import referencji działał dobrze, możesz eksplorować go jak każde inne odwołanie, a metody/structs/classes/constants powinny pojawić się w tym obszarze nazw i intellisense.
To pomoże Ci zacząć. Jeśli jest to wdrożone w środowisku korporacyjnym lub takie, które można kontrolować, może to być wszystko, czego potrzebujesz.
Możesz (początkowo) po prostu zaimportować referencję. Jeśli potrzebujesz większej kontroli (lub otrzymasz błędy z importu VS), możesz użyć tlbimp w Windowsie SDK. Spowoduje to utworzenie zespołów współdziałania. Możesz pobrać definicje klas z metadanych.
EDIT: To jest rzeczywiście dużo bardziej skomplikowana, jeśli chcesz pracować z 64-bitowym
Dlaczego jest trudniej czy inaczej? po prostu użyj polecenia tlbimp z zestawu narzędzi .Net64. –
Domyślam się, że wszystkie zależne zestawy używające 32-bitowej architektury. Wiem, że 64-bitowe wersje aplikacji korzystających z 32-bitowych zestawów COM Interop nie działają i na odwrót. Zawsze miałem wrażenie, że x64 może działać albo w architekturze, ale najwyraźniej tak nie jest. –
Istnieje dobry artykuł z MSDN na ten temat, który wyjaśnia kod zarządzany i niezarządzany, i krok po kroku krok po kroku, jak to zrobić. http://msdn.microsoft.com/en-us/library/ms973800.aspx#
Miłej zabawy!
Mads Torgersen język "menedżer produktu" dla C# powiedział w ostatnim podcastu DeepFriedBytes o C#, który dodali lub dodają pewne funkcje, aby ułatwić współdziałanie z COM. Gdybym tylko mógł sobie przypomnieć, co to było ... – f3lix
Myślę, że odnosisz się do "dynamicznego" typu zmiennej przychodzącego w C# 4.0. To nowe słowo kluczowe ułatwia, ale jest już możliwe dzięki C#. –