2010-12-20 7 views
2

Mein C# -Programm verwendet eine COM-Komponente über eine Interop-Assembly. Die COM-Komponente ändert sich manchmal (Methoden werden am Ende der Schnittstelle hinzugefügt). I need to build this program in an automated build and have the interop assembly incrementing its version number - Dies kann erreicht werden, indem Sie tlbimp als Pre-Build-Schritt verwenden.Wie füge ich eine Interop-Assembly hinzu, die ihre Versionsnummer ändert?

Das Problem ist, dass die Referenz in der Projektdatei auf eine bestimmte Version (etwa 4.0.0.34) gesetzt ist - diejenige, die die Interop-Assembly hatte, als die Referenz hinzugefügt wurde. Sobald die Zahl durch eine automatisierte Build und der Pre-Build-Schritt erfolgt, um die Versionsnummer speichert in der Projektdatei nicht mehr erhöht wird, entspricht die Anzahl der Montageeigenschaften und ich

Warnung MSB3245: Könnte dies nicht auflösen Referenz. Die Assembly konnte nicht gefunden werden "Interop.MyCOMComponent, Culture = neutral, Version = 4.0.0.34, processorArchitecture = MSIL". Stellen Sie sicher, dass die Assembly auf der Festplatte vorhanden ist. Wenn dieser Verweis von Ihrem Code benötigt wird, können Sie Kompilierungsfehler erhalten.

und dann

Der Typ oder Namespace-Name ‚MyCOMComponent‘ konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

Kann ich irgendwie Visuelle sagen Studio, in dem ich nicht die genaue Assemblyversion in der Projektdatei speichern soll, und es sollte die Version verwenden, die es zur Kompilierzeit sieht?

+0

Schließen Sie zuerst Ihre alte (n) Frage (n). –

Antwort

1

Die Sache, die für mich funktionierte, war die "COM" -Referenz zu entfernen und den Verweis auf die Interop-Assembly hinzuzufügen, als ob es eine normale ".NET" -Referenz wäre. Da letzterer keine Versionsnummer speichert, wurde das Problem ein für allemal gelöst.

1

Ich glaube, dass in der .csproj-Datei finden Sie ein Attribut namens SpecificVersion, in der Reference Element.

Das Entfernen dieses Attributs kann den gewünschten Effekt haben.