Laden...

COM Reference - Versionsunabhängig möglich?

Erstellt von Portisch vor 5 Jahren Letzter Beitrag vor 5 Jahren 840 Views
P
Portisch Themenstarter:in
1 Beiträge seit 2018
vor 5 Jahren
COM Reference - Versionsunabhängig möglich?

Hallo,

ich habe eine CAD Software die COM Type Libraries zur Verfügung stellt.
Diese binde ich normal im VS2017 in meinen eigenen 8 Projekten als Reference ein.
Nun bringt der CAD Hersteller ca. alle 6 Monate ein Update raus.
Leider ändert sich dann auch die Version der COM Type Library und mein Programm läuft nicht mehr.

Die einzige Methode die ich jetzt gefunden habe ist die "manuelle":

    <COMReference Include="PowerPCB" Condition="'$(Configuration)' == 'Release VX2' Or '$(Configuration)' == 'Debug VX2'">
      <Guid>{0821EF00-B880-11CF-8268-0020AF937987}</Guid>
      <VersionMajor>44</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="PowerPCB" Condition="'$(Configuration)' == 'Release VX2.2' Or '$(Configuration)' == 'Debug VX2.2'">
      <Guid>{0821EF00-B880-11CF-8268-0020AF937987}</Guid>
      <VersionMajor>51</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="PowerPCB" Condition="'$(Configuration)' == 'Release VX2.3' Or '$(Configuration)' == 'Debug VX2.3'">
      <Guid>{0821EF00-B880-11CF-8268-0020AF937987}</Guid>
      <VersionMajor>62</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>

Somit kann man über die Configuration die richtige COM Reference auswählen. Man sieht das alles gleich bleibt bis auf die Major Version. Das ganze ist Handarbeit und schwer zu pflegen!

Kann man das nicht generell irgenwie ohne Version einbinden? Ich habe das nächste Update der CAD Software hier und möchte das gerne ändern...

16.828 Beiträge seit 2008
vor 5 Jahren

COMReference meldet sich IIRC beim COM Server um die jeweilige Referenz versioniert zu erhalten - ohne Version kann auch nicht die richtige Bibliothek geladen werden.
Daher sieht man auch viele Anwendungen, die mit COM arbeiten, dass diese auf Pluginsystemen basieren, sodass die jeweiligen COM Provider dynamisch in der Anwendung geladen werden können - je nachdem welche Version Du gerade brauchst.

COMFileReference müsste jedoch ohne Versionsangabe funktionieren.