Share via


Beheben einer vorhandenen Anwendung mithilfe einer privaten Assembly

Ab Windows XP können Sie eine private Assembly erstellen und für eine bestimmte Anwendung verfügbar machen. Diese Funktion kann verwendet werden, um eine Anwendung zu beheben, die mit einem Update nicht kompatibel ist. Ein Beispiel wäre eine Anwendung, die mit der neuesten Version von MSVCRT.DLL nicht kompatibel ist, nachdem das Betriebssystem aktualisiert wurde. In diesem Fall haben Sie nicht die Möglichkeit, die Systemversion zu ersetzen, da MSVCRT.DLL eine geschützte Windows-Datei ist. Anstatt die Anwendung neu schreiben zu müssen, um mit der neuen Version von MSVCRT zu arbeiten, können Sie eine private Assembly für MSVCRT erstellen und diese in Ihrem Anwendungsordner installieren. Beachten Sie, dass nicht jede freigegebene Komponente ein geeigneter Kandidat für eine private parallele Assembly ist, und dass einige Komponenten Lizenzierungseinschränkungen hinsichtlich der Installation ihrer Komponenten haben. Die Komponente muss die Kriterien für eine parallele Komponente erfüllen. Fragen Sie den Herausgeber der Komponente, ob er eine geeignete Assembly bereitstellen kann.

Das Manifest der privaten Assembly und das Manifest der Anwendung sollten im selben Ordner wie die ausführbare Datei der Anwendung installiert werden. Wenn die Anwendung ausgeführt wird, wird das Anwendungsmanifest konsultiert und die version von MSVCRT geladen, die für die Anwendung privat ist.

In diesem Beispiel enthält die private Assembly sowohl MSVCRT.DLL als auch MSVCIRT.DLL wie im folgenden Assemblymanifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity type="win32"
      name="Microsoft.Windows.PrivateCPlusPlusRuntime" 
version="6.0.0.0" 
processorArchitecture="x86"/>
    <file name="msvcrt.dll"/>
    <file name="msvcirt.dll"/>
</assembly>

Es folgt ein Beispiel für ein mögliches Anwendungsmanifest.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity 
    version="1.0.0.0" 
    processorArchitecture="x86" 
    name="APPLICATION" 
    type="win32" 
/> 
<description>Description of Application</description> 
<dependency> 
    <dependentAssembly> 
       <assemblyIdentity 
           type="win32"
           name="Microsoft.Windows.PrivateCPlusPlusRuntime" 
           version="6.0.0.0" 
           processorArchitecture="x86"/> 
    </dependentAssembly> 
</dependency> 
</assembly>