2017-11-30 11 views
1

Ich habe folgende Situation:Seite an Seite in dll

  • Eine ausführbare in C# entwickelt verbindet eine verwaltete DLL, die DLL eine andere dritte Partei fordert (geladen, wie nebeneinander). Die Exe verwendet nicht direkt ein Objekt aus der DLL des Drittanbieters.

Die Beziehung zwischen den Komponenten ist:

EXE - >> MyDll >> 3rdPartyDLL

Ich mag würde eine Referenz des 3rd-Party-DLL in myDLL.manifest nur einstellen (es kompiliert mit mt.exe) wie folgt aus: myDLL.manifest

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<assemblyIdentity version="1.0.0.0" name="myDLL"/> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="ThirdPartyDLL" version="1.0.0.0"/> 
    </dependentAssembly> 
    </dependency> 
<file name ="myDLL.dll"/> 
</asmv1:assembly> 

Aber wenn ich die EXE es löst eine Ausnahme zu starten, weil es die 3partyDLL nicht finden. Es funktioniert nur, wenn ich auch in die EXE.manifest die Abhängigkeit der 3rdPartyDLL einfügen.

Aber in diesem Fall muss jedes Mal, wenn die dritte partyDLL die Version ändert (auch für kleine Korrekturen), ich die EXE neu kompilieren, um das Manifest darin einzubetten.

Ich habe versucht, nach einem praktischen Beispiel mit einem solchen Szenario zu suchen, aber ich habe nichts gefunden. Gibt es eine Referenz oder ein praktisches Beispiel?

+0

Es aktiviert ein Manifest, das in dieser DLL eingebettet ist. Das ständige Ändern der deklarierten Version in diesem Manifest ist nicht sinnvoll. Sie wissen einfach nicht, was für eine Härte das für Sie bedeutet, bis Sie ein Telefon nehmen und es ihnen erzählen. –

Antwort

0

Wo befindet sich das 3rdPartyDLL auf Ihrem System? Ist es im selben Ordner wie der der exe oder in einem anderen Pfad? Anstatt die Abhängigkeit der 3rdPartyDLL in der EXE.manifest hinzuzufügen, stellen Sie sicher, dass sich die 3rdPartyDLL im selben Ordner befindet wie die exe.

+0

Ja, sie befinden sich alle im selben Ordner. – max