Hallo,
wenn ich den Compiler Output einer App in ein anderes Verzeichnis umleite (General / Output folder), dann werden exe und pdb zwar dort generiert, aber wenn ich die App dann aus XIDE starte wird abgebrochen mit der Meldung App funktioniert nicht mehr. Wieso funktioniert das nicht?
Compiler Output umleiten
Moderator: wriedmann
Compiler Output umleiten
Hi!
Maybe there are some other necessary dlls for your app that do not exist in this new folder?
Try starting your app in debug mode (after setting it to 32bit/x86), it shold give you more information when the problem happens.
Maybe there are some other necessary dlls for your app that do not exist in this new folder?
Try starting your app in debug mode (after setting it to 32bit/x86), it shold give you more information when the problem happens.
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Compiler Output umleiten
Hallo Franz,
.NET kann leider keine DLLs aus anderen Verzeichnissen aufrufen, außer sie sind im GAC (Global Assembly Cache).
Wenn Du das Exe in einem anderen Verzeichnis haben möchtest, musst Du daher von hand dafür Sorge tragen, dass die DLLs mitkopiert werden.
Das lässt sich in XIDE am besten über "Post Build Events" einstellen. Und dieses cmd-File hat bei mir folgenden Inhalt:
HTH
Wolfgang
.NET kann leider keine DLLs aus anderen Verzeichnissen aufrufen, außer sie sind im GAC (Global Assembly Cache).
Wenn Du das Exe in einem anderen Verzeichnis haben möchtest, musst Du daher von hand dafür Sorge tragen, dass die DLLs mitkopiert werden.
Das lässt sich in XIDE am besten über "Post Build Events" einstellen. Und dieses cmd-File hat bei mir folgenden Inhalt:
Code: Select all
@echo off
set TargetPath=c:cavoworkalpialpionlineDoorConfig
set SourcePath=C:XSharpXIDEProjectsALPI_WPFBinDebug
set Executable=DoorConfiguration
set Dependencies=AlpiControls ConfigLanguage ProdConfigBase rdm.BaseLib rdm.MVVMBase rdm.MVVMControls rdm.MVVMHelper rdm.SQLBase rdm.WPFLib DoorConfig rdm.SQLite DoorConfigModels NCalc Antlr.runtime DotNetZip
replace %SourcePath%%Executable%.exe %TargetPath% /u
replace %SourcePath%%Executable%.pdb %TargetPath% /u
for %%a in ( %Dependencies% ) do (
echo Replacing %%a
replace %SourcePath%%%a.dll %TargetPath%
replace %SourcePath%%%a.pdb %TargetPath%
)
:ende
rem pause
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Compiler Output umleiten
Hallo Wolfgang,
ist das der einfachste Weg, wie man EXE und Daten (DBF, INI, etc) in ein gemeinsames Verzeichnis bekommt oder soll man das EXE unter C:XIDEProjectsProjectnamebindebug lassen und nur die Daten in ein App Verzeichnis legen. In meinen VO Apps verwende ich meist keine Pfadangaben, da ich mir beim Start SetDefault() setze, abhängig davon ob am Entwicklungsrechner oder auf einem Produktivrechner?
ist das der einfachste Weg, wie man EXE und Daten (DBF, INI, etc) in ein gemeinsames Verzeichnis bekommt oder soll man das EXE unter C:XIDEProjectsProjectnamebindebug lassen und nur die Daten in ein App Verzeichnis legen. In meinen VO Apps verwende ich meist keine Pfadangaben, da ich mir beim Start SetDefault() setze, abhängig davon ob am Entwicklungsrechner oder auf einem Produktivrechner?
Compiler Output umleiten
Hi Chris
I think its the problem, Wolfgang said! The EXE Output Folder is not in the GAC, if I start it from C:XIDEProjectsProjectnamebindebug it dows well!
I think its the problem, Wolfgang said! The EXE Output Folder is not in the GAC, if I start it from C:XIDEProjectsProjectnamebindebug it dows well!
Compiler Output umleiten
Hallo Franz,
Inzwischen lasse ich die Binaries immer unter bindebug und definiere den Konfigurations-/Datenpfad über eine Ini im bin/debug-Verzeichnis.
Wenn Du mit der XIDE arbeitest, solltest Du auch mein Plugin anschauen - das bringt z.B. auch einen Explorer im bin-Verzeichnis mit: https://www.riedmann.it/download/XIDE_WR_Plugin.zip
Auf der entsprechenden Seite solltest Du vielleicht mehr Interessantes finden (auch wenn nicht alles topaktuell ist): https://www.riedmann.it/verschiedenes_xsharp.php
Wolfgang
das ist Geschmackssache. In meinen ersten Projekten habe ich das Exe samt DLLs immer wegkopiert.ist das der einfachste Weg, wie man EXE und Daten (DBF, INI, etc) in ein gemeinsames Verzeichnis bekommt oder soll man das EXE unter C:XIDEProjectsProjectnamebindebug lassen und nur die Daten in ein App Verzeichnis legen.
Inzwischen lasse ich die Binaries immer unter bindebug und definiere den Konfigurations-/Datenpfad über eine Ini im bin/debug-Verzeichnis.
Wenn Du mit der XIDE arbeitest, solltest Du auch mein Plugin anschauen - das bringt z.B. auch einen Explorer im bin-Verzeichnis mit: https://www.riedmann.it/download/XIDE_WR_Plugin.zip
Auf der entsprechenden Seite solltest Du vielleicht mehr Interessantes finden (auch wenn nicht alles topaktuell ist): https://www.riedmann.it/verschiedenes_xsharp.php
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Compiler Output umleiten
Hallo Wolfgang,
ich werde erstmal die EXE belassen, wo der Compiler sie hinlegt. Beim Programmstart setze ich mir dann mit SetDefault() den Ordner für allfällige Files (DBF, INI, etc). Mit #ifdef ... #else ... #endif kann ich diesen dann auch bei Bedarf abhängig vom Compiler VO / X# machen!
Mit Version() habe ich bisher die VO Compiler Version ermittelt, gibt es dafür auch was in X#?
Danke für eure Hilfe!
LG Franz
ich werde erstmal die EXE belassen, wo der Compiler sie hinlegt. Beim Programmstart setze ich mir dann mit SetDefault() den Ordner für allfällige Files (DBF, INI, etc). Mit #ifdef ... #else ... #endif kann ich diesen dann auch bei Bedarf abhängig vom Compiler VO / X# machen!
Mit Version() habe ich bisher die VO Compiler Version ermittelt, gibt es dafür auch was in X#?
Danke für eure Hilfe!
LG Franz
Compiler Output umleiten
Hallo Franz,
die Variable __VERSION__ sollte das machen:gibt bei mir 2.2.0.0 zurück.
lg
Wolfgang
die Variable __VERSION__ sollte das machen:gibt bei mir 2.2.0.0 zurück.
lg
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Compiler Output umleiten
Danke, funktioniert!
-
- Posts: 774
- Joined: Wed May 17, 2017 8:50 am
- Location: Germany
Compiler Output umleiten
Hallo Franz,
Mit dem X# compiler define __XSHARP__ kann man am zwischen VO und X# Code unterscheiden. Da VO diesen define nicht kennt ignoriert der VO compiler den X# spezifischen und der X# compiler den VO spezifischen code.
Gruß
Karl-Heinz
Mit dem X# compiler define __XSHARP__ kann man am zwischen VO und X# Code unterscheiden. Da VO diesen define nicht kennt ignoriert der VO compiler den X# spezifischen und der X# compiler den VO spezifischen code.
Code: Select all
function xyz()
...
#ifdef __XSHARP__
spezieller x# code ...
#else
spezieller VO code ...
#endif
...
return
Karl-Heinz