Behalten Sie die richtige Version für eine COM-DLL bei, auf die in einem .NET-Projekt verwiesen wird

StackOverflow https://stackoverflow.com/questions/41832

  •  09-06-2019
  •  | 
  •  

Frage

Ich möchte auf eine COM-DLL in einem .NET-Projekt verweisen, möchte aber auch sicherstellen, dass die erstellte Interop-DLL die richtige Version hat (damit Patches wissen, wann die DLL geändert werden muss).

Wenn ich es verwende TlbImp Mit dem kann ich die benötigte Version angeben /asmversion Flag, aber wenn ich es direkt aus Visual Studio hinzufüge, erhält es eine Version, die nichts mit der Version der ursprünglichen COM-DLL zu tun hat.

Ich habe versucht, die Version im zu ändern .vcproj Datei

<ItemGroup>
    <COMReference Include="MYDLLLib">
        <Guid>{459F8813-D74D-DEAD-BEEF-00CAFEBABEA5}</Guid>
        <!-- I changed this -->
        <VersionMajor>1</VersionMajor> 
        <!-- This too -->   
        <VersionMinor>0</VersionMinor> 
        <Lcid>0</Lcid>
        <WrapperTool>tlbimp</WrapperTool>
        <Isolated>False</Isolated>
    </COMReference>
</ItemGroup>

Doch dann konnte das Projekt nicht erstellt werden, mit folgendem Fehler:

Fehler CS0246:Der Typ- oder Namespacename „MYDLLLib“ konnte nicht gefunden werden (fehlt Ihnen eine using-Direktive oder ein Assemblyverweis?)

Gibt es eine Möglichkeit, dies zu erreichen, ohne alle meine COM-Referenzen mit zu erstellen? TlbImp im Voraus?

Wenn die Antwort lautet Ja Gibt es eine Möglichkeit, zusätzlich zur Haupt- und Nebenversion eine Build-Nummer anzugeben?(z.B. 1.2.42.0)

War es hilfreich?

Lösung

Die Guid bezieht sich auf die Guid für die TypeLib, nicht direkt auf die DLL.Die Versionsnummern beziehen sich auf die Version der TypeLib, nicht auf die DLLs.

Die Versionsnummer stammt aus Ihrer IDL-Datei und ich glaube, sie unterstützt nur eine Haupt- und Nebenversion und keine Build-Version.Ändert sich diese Version, wenn Sie die Typelib ändern?

Die Versionsnummern werden in der Registrierung angezeigt unter:

HKEY_CLASSES_ROOT\Typelib\{typelib uuid}\Major.Minor

Wenn die Nebenversion auf 0 gesetzt ist, wird meiner Meinung nach die „neueste“ Version importiert, die mit der Hauptversion übereinstimmt, aber die Hauptversion muss auf etwas gesetzt sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top