Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Inhalt Dokument Beschreibung... 1 Vorbereitung... 1 Build.bat anlegen... 1 Verknüpfung Build.bat im Projekt anlegen... 3 Einzelne Betriebssystem/Plattform Skripte im Projekt anlegen... 4 Skriptdatei ProSteelTools_S4_10_32.bat... 4 Skriptdatei ProSteelTools_S4_12_64.bat... 5 Skript ausführen... 6 Dokument Beschreibung Das Kompilieren eines Projektes in Visual Basic Express ist immer nur für ein Betriebssystem/Plattform möglich. Wenn zum Beispiel ein Projekt für 32bit und 64bit für jeweils Autocad 2010, 2011 und 2012 kompiliert werden soll, müßten sechsmal die Verweise geändert werden um dann jeweils einzeln zu kompilieren. Dieser Vorgang läßt sich mit Hilfe von Skripten komplett automatisieren. Dieses Dokument beinhaltet eine einfache Schritt für Schritt Anleitung zur Erstellung der benötigten Skripte. Vorbereitung Wichtig ist, daß in dem verwendeten Projekt alle Verweise für das Kompilieren eingestellt sind. Praktischer Weise sollte das die Version sein, die auch für das Debuggen verwendet wird. Alle benötigten Einstellungen sind in folgendem Dokument beschrieben: http://communities.bentley.com/products/structural/drafting detailing/prosteel prostructures_deutsch/m/prostructures_dot_n et/199226.aspx Build.bat anlegen Build.bat ist das Kernskript über das alle anderen Skripte aufgerufen werden. Hier als Erstes im Projekt Ordner von Visual Basic Express einen Ordner Bat erstellen. 1
Bentley Technical Support Der Pfad liegt meistens unterhalb Eigene Dateien, kann aber in Visual Basic Express angepaßt werden. Dann in dem neuen Ordner eine Textdatei mit dem Namen Build.bat erstellen. Skript Dateien wie.bat können direkt über das Kontextmenü zum Bearbeiten geöffnet werden. Per Doppelklick wird die Datei aber ausgeführt und nicht zum Bearbeiten geöffnet. Auch ist das Öffnen einer Bat Datei aus einem Textprogramm heraus möglich. Folgendes Skript in die.bat Datei kopieren: set path=%path%;%windir%\microsoft.net\framework\v3.5 %~d1 cd /d %~p1 echo on if exist "%~n1_s4_12_64.bat" ( call "%~n1_s4_12_64.bat" msbuild %1 /p:defineconstants=win64 /p:platform="x64" /p:configuration=%config% if exist "%~n1_s4_11_64.bat" ( call "%~n1_s4_11_64.bat" msbuild %1 /p:defineconstants=win64 /p:platform="x64" /p:configuration=%config% if exist "%~n1_s4_10_64.bat" ( call "%~n1_s4_10_64.bat" msbuild %1 /p:defineconstants=win64 /p:platform="x64" /p:configuration=%config% if exist "%~n1_s4_12_32.bat" ( call "%~n1_s4_12_32.bat" msbuild %1 /p:defineconstants=win32 /p:platform="x86" /p:configuration=%config% if exist "%~n1_s4_11_32.bat" ( call "%~n1_s4_11_32.bat" msbuild %1 /p:defineconstants=win32 /p:platform="x86" /p:configuration=%config% if exist "%~n1_s4_10_32.bat" ( call "%~n1_s4_10_32.bat" msbuild %1 /p:defineconstants=win32 /p:platform="x86" /p:configuration=%config% pause 2
Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Bitte bei Skripten immer darauf achten, daß hinter der letzten Zeile noch ein Zeilenumbruch folgt. Ansonsten würde diese Zeile ignoriert werden. In der ersten Zeile wird die Framework Version vorgegeben. Diese Version sollte von allen Ziel Plattformen, in unserem Fall Autocad unterstütz werden. Für Autocad 2010, 2011 und 2012, wie in diesem Beispiel verwendet ist die Version 3.5 ideal. Die Verwendung von älteren Versionen ist auch möglich. Die neuere Version 4.0 würde aber nur für Autocad 2012 funktionieren. Der Platzhalter "%~n1 steht für den Namen des Projektes. In den Einzelnen Absätzen werden dann die jeweiligen Kompiliervorgänge für entsprechendes Betriebssystem/Plattform gestartet. Die Namensgebung "%~n1_s4_10_32.bat" kann auch individuell angepaßt werden. In diesem Beispiel ist gemeint: S4 ProStructures Select Series 4 10 Autocad 2010 32 32bit Für die 32bit Kompiliervorgänge muß entsprechend WIN32 /p:platform="x86" eingestellt sein und für 64bit WIN64 /p:platform="x64" Die letzte Zeile Pause- sorgt dafür, daß das Skriptfenster sich nicht gleich nach Ausführung schließt. So kann man eventuelle Fehlermeldungen einsehen. Verknüpfung Build.bat im Projekt anlegen Als nächstes muß im Projektordner eine Verknüpfung zur Build.bat angelegt werden. Der Projektordner ist der Ordner in dem die Projekt.vbproj Datei liegt, also in unserem Beispiel ProSteelTools.vbproj Nach dem Anlegen der Verknüpfung die Eigenschaften der Verknüpfung öffnen und bei Ziel den Pfad zur Projektdatei Projekt.vbproj eintragen. 3
Bentley Technical Support Einzelne Betriebssystem/Plattform Skripte im Projekt anlegen In unserem Beispiel soll für 32bit/64bit und je für Autocad 2010, 2011 und 2012 kompiliert werden. Also sollen sechs Kompiliervorgänge abgearbeitet werden. Für jeden Kompiliervorgang muß im Projektordner eine.bat Datei erstellt werden. Die jeweilige Skriptdatei enthält die Verweise zu Pfaden in denen sich benötigte DLL Dateien auf dem Rechner befinden. Folgende Beschreibung entspricht der Konfiguration für das Kompilieren auf einem 32bit Rechner. Skriptdatei ProSteelTools_S4_10_32.bat Der Name besteht aus dem Namen des Projektes und dem in Build.bat verwendeten Dateinamen. ("%~n1_s4_10_32.bat" Inhalt der Skriptdatei: set PRGDIR=C:\Programme\Bentley\ProStructures\V8i_S4\AutoCAD 2010\Prg set GACDIR1=C:\WINDOWS\assembly\GAC_MSIL\Autodesk.AutoCAD.Interop\18.0.0.0 eed84259d7cbf30b set GACDIR2=C:\WINDOWS\assembly\GAC_MSIL\Autodesk.AutoCAD.Interop.Common\18.0.0.0 eed84259d7cbf30 b @rem 17.0.54.0 eed84259d7cbf30b @rem 17.1.51.0 eed84259d7cbf30b @rem 17.2.0.0 eed84259d7cbf30b @rem 18.0.0.0 eed84259d7cbf30b @rem 18.1.0.0 eed84259d7cbf30b @rem 18.2.0.0 eed84259d7cbf30b set ACADDIR=C:\Program Files\AutoCAD 2010 set OutputPath=D:\db\DB\00826\S4\Autocad_2010_32bit set CONFIG=Debug set WINDEF=WIN32 4
Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Die erste Zeile gibt den Pfad des Prg Verzeichnisses der ProStructures Version an. Die zweite und dritte Zeile bezieht sich auf Quellen für Autocad Interop. Diese sind so als Pfad nur auf dem passenden Betriebssystem zu finden. Der nächste Block ist eine Auflistung der möglichen Autocadversionen bezüglich der Interop Verweise. (Muß nur editiert werden wenn eine Version ergänzt wird. set ACADDIR= bezieht sich auf den Pfad der Autocadinstallation - muß rechnerspezifisch angepaßt werden. set OutputPath= ist der Pfad in den die komplilierte DLL abgelegt wird hier gewünschten Ausgabepfad einstellen. Skriptdatei ProSteelTools_S4_12_64.bat Inhalt der Skriptdatei: set PRGDIR=D:\DB\DB\_Visual_Studio\Visual Studio 2010\Projects\00_VB.Net_Verweise\Autocad_2012_64bit set GACDIR1=D:\DB\DB\_Visual_Studio\Visual Studio 2010\Projects\00_VB.Net_Verweise\Autocad_2012_64bit set GACDIR2=D:\DB\DB\_Visual_Studio\Visual Studio 2010\Projects\00_VB.Net_Verweise\Autocad_2012_64bit set ACADDIR=D:\DB\DB\_Visual_Studio\Visual Studio 2010\Projects\00_VB.Net_Verweise\Autocad_2012_64bit set OutputPath=D:\DB\DB\00826\S4\Autocad_2012_64bit set CONFIG=Debug Über dieses Skript wird für Autocad 2012 64bit kompiliert, welches gar nicht auf dem Rechner installiert ist. Alle benötigten DLL Dateien werden aus einem Ordner gelesen. 5
Bentley Technical Support Skript ausführen Für die Ausführung des Skriptes muß die Verknüpfung zur Build.bat im Projektordner gestartet werden. Dann erscheint ein Fenster in dem die Skripte abgearbeitet werden. Build succeded in grün steht dann dafür, daß das Projekt kompiliert werden konnte. Diese Meldung gibt es sechsmal, für alle einzelnen Kompiliervorgänge. Falls das Kompilieren nicht funktioniert hat, gibt es entsprechende Fehlermeldungen, die dann eine Korrektur der Skripte ermöglichen. Das Fenster kann dann durch eine beliebige Tastatureingabe geschlossen werden. 6