Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  x86 - x64 - Acad2008/9/10 kompilieren ohne Ende

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  x86 - x64 - Acad2008/9/10 kompilieren ohne Ende (1551 mal gelesen)
Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 21. Jul. 2009 09:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe mal eine Frage grundsätzlicher Natur.
Ich entwickle nun seit geraumer Zeit mit .Net-C# irgendwelche Applikationen.
Mich nervt allerdings, dass ich diese für die x86 und x64 und die verschiedenen AutoCAD-Versionen kompilieren muss. Jedesmal müssen die Verweise auf die jeweiligen Bibliotheken neu gesetzt werden, ...

So kann es eben schnell passieren, dass man Code hat, der für AutoCAD 2008 - 2010 funktioniert, eben 6x kompiliert werden muss - man also 6 Programmversionen hat.

Habt Ihr vielleicht eine Idee, wie man das umgehen kann?

Ich habe nun schon überlegt, eine Pseudo-Klasse anzulegen, die dann je nach BS und AutoCAD-Version die entsprechenden DLL-s lädt. Hierbei müsste ich jedoch dann in dieser Pseudo-Klasse die ganzen benötigten Eigenschaften/Funktionen hinterlegen. Will man diese Pseudoklasse dann jedoch für verschiedene Applikationen nutzen, wird das Versionsmanagement zu einer schier unlösbaren Aufgabe, da sich der Inhalt der Klasse täglich ändern würde ...

Wie löst Ihr das?


Grüße!

Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 21. Jul. 2009 10:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Holger,

nun ganz ohne mehrfach kompilieren komm ich auch nicht durch, nur den Unterschied zwischen x86 und 64 brauch ich nicht, denn es gibt bis auf Adressen (wenn Du Invokes) verwendest, bzw. eine Argument (hab's jetzt nicht bei der Hand, da wird Integer vorausgesetzt, bei x86 klarerweise Int32, leider aber auch bei 64bit wird Int32 - und daher nicht als Integer zu deklarieren - vorausgesetzt), aber sonst sind mir keine Unterschiede bekannt, wenn Du mit Einstellung <AnyCPU> arbeitest, kannst Du die erzeugten Assemblys mit der 32bit-Version genauso laden wie mit der 64bit-Version (sind ja letztlich nur CIL-Code).

Aufzupassen ist halt, wenn Du z.B. JET-Datenbanken ansprechen willst, dann geht das leider mit 64bit (von Microsoft aus nicht), d.h. in diesem Fall muss Dein Code erkennen, ob er in einer 32bit- oder 64bit-Umgebung läuft und entsprechend abzweigen. 

Nach der bisherigen Erfahrung könnte man FAST(!!) alles auf 2007 basierend machen, diese Assemblies laufen i.d.R. (zugegeben, kleine Details machen dann ev. Probleme bzw. Modifikationen notwendig) auch mit 2008 und 2009. Willst Du neue Funktionen von z.B. 2009 nutzen, dann eigene Assembly dazuladen, die nur diese Funktionen dazudefiniert.
ABER: sauber und sicher ist das aus meiner Sicht nicht (weil Du ja keine möglichen Compilermessages bekommst, wenn sich die Signaturen in den Lib's nicht vertragen würden. Soll heissen, wenn Du mit 2007 erstellst, dann Compiler OK, würdest Du dieses mit 2009 kompilieren, dann würdest Du ev. Warnings oder Errors bekommen, wo sich Signaturen nicht vertragen (und der Abflug wäre dann prognostiziert). Hoffe, dass das verständlich beschrieben ist.

2010 wird mangels Binärkompatibilität jedenfalls getrennt zu kompilieren sein.

HTH, - alfred -

------------------
www.hollaus.at

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 21. Jul. 2009 11:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

... also doch 

Schade - aber dann führt daran wohl kein Weg vorbei.

Danke für die Antwort.

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 21. Jul. 2009 12:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi, 
Zitat:
Jedesmal müssen die Verweise auf die jeweiligen Bibliotheken neu gesetzt werden, ...
...dazu hätt ich aber noch was (weiss nicht, wieso ich das zuerst nicht gesehen habe:( ).

In meiner Projektstruktur habe ich verschiedene Solution-Files (nach Version), diese zeigen auf verschiedene Projektdateien (nach Version), die Projektdateien haben aber immer den gleichen Source dahinter. Damit muss ich nur einmal Verweise setzen, dann brauch ich nur mehr die entsprechende Solution öffnen und kompilieren.

Beispiel:

Code:
für AutoCAD 2008:
myProduct_17_01.sln
  +-->myProductProject_17_01.csproj
        +-->Verweise auf 2008-basierende Lib's
        +-->myProduct_Main.cs

für AutoCAD 2009:
myProduct_17_02.sln
  +-->myProductProject_17_02.csproj
        +-->Verweise auf 2009-basierende Lib's
        +-->myProduct_Main.cs

für AutoCAD 2010:
myProduct_18_00.sln
  +-->myProductProject_18_00.csproj
        +-->Verweise auf 2010-basierende Lib's
        +-->myProduct_Main.cs


Du siehst, 'myProduct_Main.cs' ist immer der gleiche Source, aber durch die verschiedenen (versionsabhängigen) Solutions/Projekte gibt es keine Notwendigkeit mehr, die Verweise jedesmal umzustellen. Du brauchst nach Änderung von 'myProduct_Main.cs' nur mehr die Solutions öffnen ==> kompilieren ==> schliessen ==> nächste Solution (und das könnte eigentlich per Script gehen, wie man aber Fehler rauskriegt, wüsste ich auf die Schnelle nicht. Ev. kann man sich ja das eingebaute Scripting im VisualStudio selbst dazu ansehen).

Meine Ausgabeverzeichnisse liegen dann in entsprechenden Ordnern (bin_17_01 oder bin_17_02 oder bin_18_00) und entsprechend gibt es ein CUI/CUIX, das mir aus der AutoCAD-Version mit 'netload' auf das entsprechende Verzeichnis schliesst und von dort die Assembly lädt.

- alfred -

------------------
www.hollaus.at

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 21. Jul. 2009 12:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Alfred,

:top das ist mal ein Ansatz, den es lohnt zu verfolgen, denn es kommt ja noch bunter ... wenn man z.B. die verschiedenen Excel-Varianten beachten muss. So erstellt man sich einfach die Projektdateien für jede Kombination und muss dann 'nur' noch (wie du bereits schreibst) öffnen|kompilieren -> fertig.

Danke für den Tip.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz