Announcement

Collapse
No announcement yet.

registrierungsfreie Aktivierung von NET-Komponente

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • registrierungsfreie Aktivierung von NET-Komponente

    Hallo,
    ich versuche schon seit Tagen meine c# dll aus einem C-programm zu nutzen ohne registry aber erfolglos.

    mit registry geht.
    ohne registry kommt es zu einer fehlemeldung wenn der client gestartet wird.
    ich have folgende links schon angeschaut und versucht schritt oper schritt aber erfolglos:
    http://msdn.microsoft.com/en-us/library/ms973915.aspx
    http://jwbs-blog.blogspot.com/2009/0...onents_16.html

    Ereigniseanzeige:
    Fehler beim Generieren des Aktivierungskontextes für "Pfad\Client.exe.Manifest". Die abhängige Assemblierung "QuoteSource,type="win32",version="1.0.0.0"" konnte nicht gefunden werden. Verwenden Sie für eine detaillierte Diagnose das Programm "sxstrace.exe".

    mit dem Tool sxstrace:
    =================
    Startet die Generierung des Aktivierungskontextes.
    Eingabeparameter:
    Flags = 0
    ProcessorArchitecture = x86
    CultureFallBacks = de-DE;de;en-US;en
    ManifestPath = Pfad\Client.exe
    AssemblyDirectory = Pfad\Debug\
    Application Config File =
    -----------------
    INFORMATION: Manifestdatei "Pfad\Client\Debug\Client.exe" wird analysiert.
    INFORMATION: Die Manifestsdefinitionsidentität ist "client,type="win32",version="1.0.0.0"".
    INFORMATION: Verweis: QuoteSource,type="win32",version="1.0.0.0"
    INFORMATION: Verweis "QuoteSource,type="win32",version="1.0.0.0"" wird aufgelöst.
    INFORMATION: Für ProcessorArchitecture "QuoteSource,type="win32",version="1.0.0.0"" wird der Verweis aufgelöst.
    INFORMATION: Verweis für Kultur "Neutral" wird aufgelöst.
    INFORMATION: Bindungsrichtlinie wird angewendet.
    INFORMATION: Es wurde keine Bindungsrichtlinienumleitung gefunden.
    INFORMATION: Startet die Assemblierungssuche.
    INFORMATION: Die Assemblierung in WinSxS wurde nicht gefunden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.DLL" zu finden.
    INFORMATION: Versuch, ein Manifest unter "=================
    Startet die Generierung des Aktivierungskontextes.
    Eingabeparameter:
    Flags = 0
    ProcessorArchitecture = x86
    CultureFallBacks = de-DE;de;en-US;en
    ManifestPath = Pfad\Client.exe
    AssemblyDirectory =Pfad\Debug\
    Application Config File =
    -----------------
    INFORMATION: Manifestdatei "Pfad\Client.exe" wird analysiert.
    INFORMATION: Die Manifestsdefinitionsidentität ist "client,type="win32",version="1.0.0.0"".
    INFORMATION: Verweis: QuoteSource,type="win32",version="1.0.0.0"
    INFORMATION: Verweis "QuoteSource,type="win32",version="1.0.0.0"" wird aufgelöst.
    INFORMATION: Für ProcessorArchitecture "QuoteSource,type="win32",version="1.0.0.0"" wird der Verweis aufgelöst.
    INFORMATION: Verweis für Kultur "Neutral" wird aufgelöst.
    INFORMATION: Bindungsrichtlinie wird angewendet.
    INFORMATION: Es wurde keine Bindungsrichtlinienumleitung gefunden.
    INFORMATION: Startet die Assemblierungssuche.
    INFORMATION: Die Assemblierung in WinSxS wurde nicht gefunden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.DLL" zu finden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.MANIFEST" zu finden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.DLL" zu finden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.MANIFEST" zu finden.
    INFORMATION: Es wurde kein Manifest für die Kultur "Neutral" gefunden.
    INFORMATION: Beendet die Assemblierungssuche.
    FEHLER: Der Verweis "QuoteSource,type="win32",version="1.0.0.0"" kann nicht aufgelöst werden.
    FEHLER: Bei der Generierung des Aktivierungskontextes ist ein Fehler aufgetreten.
    Beendet die Generierung des Aktivierungskontextes.
    \QuoteSource.MANIFEST" zu finden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.DLL" zu finden.
    INFORMATION: Versuch, ein Manifest unter "Pfad\QuoteSource.MANIFEST" zu finden.
    INFORMATION: Es wurde kein Manifest für die Kultur "Neutral" gefunden.
    INFORMATION: Beendet die Assemblierungssuche.
    FEHLER: Der Verweis "QuoteSource,type="win32",version="1.0.0.0"" kann nicht aufgelöst werden.
    FEHLER: Bei der Generierung des Aktivierungskontextes ist ein Fehler aufgetreten.
    Beendet die Generierung des Aktivierungskontextes.

    hier ist der source code
    c# dll
    Code:
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace QuoteSource
    {
        [System.Runtime.InteropServices.Guid("4362B3CA-B747-4F67-B8DA-079EEC0F68F6")]
        public interface IQuoteProvider
        {
            string GetAFunnyQuote();
        }
    
     [System.Runtime.InteropServices.Guid("8B351C03-A423-4D50-A19C-7672638FE887")]
        public class QuoteProvider : IQuoteProvider
        {
            private string[] _quotes = 
            {
                "Doing nothing is very hard to do...you never know when you're finished. - Leslie Nielsen", 
                "It's just a job. Grass grows, birds fly, waves pound the sand. I beat people up. - Muhammad Ali", 
                "I like work: it fascinates me. I can sit and look at it for hours. - Jerome K Jerome", 
                "The easiest job in the world has to be coroner. Surgery on dead people. What's the worst thing that could happen? If everything went wrong, maybe you'd get a pulse.- Dennis Miller", 
                "My father taught me to work; he did not teach me to love it.- Abaham Lincol", 
                "Hard work never killed anybody, but why take a chance?- Edgar Berger", 
                "My advice to you is get married: if you find a good wife you'll be happy; if not, you'll become a philosopher.- Socrates", 
                "Love is temporary insanity curable by marriage.- Ambrose Bierce"
            };
    
            public QuoteProvider()
            {
            }
    
            public string GetAFunnyQuote()
            {
                Random rand = new Random();
                return _quotes[rand.Next(_quotes.Length-1)];
            }
        }
    }
    und hier der client
    Code:
    int _tmain(int argc, _TCHAR* argv[])
    {
    	CoInitializeEx(0, COINIT_MULTITHREADED);
    
    	{
    		IQuoteProviderPtr ptr;
    		HRESULT hr = ptr.CreateInstance(__uuidof(QuoteProvider));
    		if (SUCCEEDED(hr))
    		{
    			cout << ptr->GetAFunnyQuote() << endl;
    		}
    		else
    			cout << "COM Error:" << endl;
    			ErrorDescription(hr);
    
    		char c;
    		cin >> c;
    	}
    
    	CoUninitialize();
    
    	return 0;
    }
    ich entwickle unter windows 7 und mit visual studio 2010
    für jede Hilfe oder Anregung bin ich sehr dankbar
    Zuletzt editiert von youssef.elidrissi; 07.02.2012, 16:26.

  • #2
    das funktioniert nur wenn ich die client manifest datei innerhal des visual stusio hinzufüge und die c#-dll-manifest ausserhalb der Dll (gneau wo der client sie sucht) plaziere. woral liegt das.
    die Reihenfolge ist, dass beim client den internen manifest genommen wird und bei der .NET-Komponente den externen manifest benutzt wird.
    was muss man machen damit die umgekehrte Rehenfolge benutzt wird bei der Suche nach der manifest-datei

    Comment

    Working...
    X