Próbowałem uzyskać bezbłędną bibliotekę DLL COM opartą na .NET do pracy, ale bez powodzenia.Konfigurowanie składników opartych na platformie .NET do aktywacji bez rejestracji
- W Visual Studio 2008 dodałem nową bibliotekę klasy C#.
- Włączam opcje "make assembly COM-visible" i "register for COM interop".
- Dodałem publiczny interfejs i klasę z niektórymi funkcjami.
- dodałem oczywisty zależność do mojego C++ aplikacji klienckiej: Komentarz #pragma (łącznik "/ manifestdependency ...
Ale kiedy zaczynam moją aplikację otrzymuję„aplikacja nie powiodło się, ponieważ aplikacja konfiguracja jest niepoprawna. "
Użyłem narzędzia Microsoft's mt do wyodrębnienia plików manifestu zarówno aplikacji klienckiej C++, jak i biblioteki DLL C# COM, a informacje w obu są takie same (zależnyAssembly w pliku manifestu C++ zawiera ta sama nazwa i wersja co assemblyIdentity w pliku manifestu COM).
Próbowałem również podejście opisane na http://msdn.microsoft.com/en-us/library/eew13bza.aspx, ale z podobnymi wynikami.
Podobnie próbowałem dodać odniesienie do mojego projektu COM w "Framework and References" mojej aplikacji klienta C++. Informacje na tej stronie właściwości wyglądały obiecująco (zawiera ona opcje takie jak "copy local", "copy dependencies" itp. I właściwości takie jak "assemblyIdentity"), ale program Visual Studio nie kopiuje bibliotek DLL ani nie dodaje automatycznie zależności do pliku manifestu.
Należy zauważyć, że "zarejestrowany wariant" działa poprawnie.
Ktoś ma jakieś pomysły na temat tego, co robię źle?
Aktualizacja:
- Kiedy tworzę proste C++ DLL i osadzić manifestu o tej samej nazwie i wersji mojego .NET COM DLL (sama assemblyIdentity) moja aplikacja uruchamia grzywny. Problem leży więc w pliku manifestu mojej biblioteki DLL .NET COM.
- Mogę pomyślnie wyodrębnić manifest z biblioteki DLL za pomocą
mt -managedassemblyname:...
, a następnie osadzić ten sam manifest za pomocąmt -outputresource:...
, ale to również nie powoduje, że system Windows pomyślnie rozwiązuje zależność.
Świetne rozwiązanie! To znacznie upraszcza proces instalacji. Wielkie dzięki! –
Witam, mam zestaw C++, który współdziała z zarządzanym zestawem COM i potrzebuję podobnego mechanizmu. Chciałbym ominąć istniejącą implementację .Net i chcieć, aby zadzwonił do mojej nowej implementacji. Z kolei zespół C++ ładowany jest przez .Net exe. A zatem, w jaki sposób manifest powinien być zaprojektowany dla strony C++? –