Autor Beitrag
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Do 17.10.13 10:42 
Hallo,

ich verwende xsltc (msdn.microsoft.com/e...brary/bb399405.aspx), um ein Assembly aus einem style sheet zu genieren. Die Generierung würde ich gern als Target in mein Projekt aufnehmen. Leider lädt VS nicht die Umgebungsvariablen im exec (ruft nur cmd auf).

Wie lade ich die VS-Umgebungsvariablen? Das ganz soll "natürlich" von der VS und .NET-Version unabhängig sein.

Prinzipiell kann ich mit $(VS100COMNTOOLS)\vsvars32.bat die Umgebungsvariablen herstellen. Wie kombiniere ich das mit exec-Element?

Danke und Gruß
Daniel
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 17.10.13 11:25 
Wie wäre es mit einer eigenen Batchdatei, die zuerst die vsvars32.bat aufruft und dann die xsltc.exe?
danielf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Do 17.10.13 13:51 
Hallo jaenicke,

Danke für deine Antwort.

Das hätte ich vielleicht dazu schreiben können. So ist es nämlich aktuell gelöst. Finde ich ziemlich umständlich für das ausführen eines einfachen commands. Für die Wartung muss man eh schon die Projekt-Datei öffnen (oder gibt's es da mittlerweile was von VS?). Wenn man dann noch für eine "banale" Ausführung noch eine Datei öffnen muss, um zu sehen was wirklich geschieht .... Da muss es doch was besseres geben - ist doch ein hausgemachtes Problem.


Gruß
Daniel
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 17.10.13 14:54 
Ich weiß nicht, ob es auch direkt irgendwie geht.

Wenn du das direkt im Command sehen willst, übergebe den auszuführenden Befehl doch als Parameter an eine allgemeine Batchdatei, die die Variablen setzt und den übergebenen Befehl ausführt.
danielf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 18.10.13 10:34 
Löst auch nicht das Problem, wenn man das Target framework ändert. Ok, man könnte das wieder als Parameter in die batch-File aufnehmen. Trotzdem muss man das batch-File mit schleppen und irgendwie läuft ja dann doch alles auf das batch-file raus.

Schade, dass es anscheinend nichts naheliegendes gibt (set target framework environment flag). Von hinten durch die Brust ins Knie macht meistens früher oder später wieder Probleme.

Naja, ich schließe das Thema, weil es ja "funktioniert".

Gruß
Daniel
danielf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 18.10.13 11:06 
Und da kommt doch noch die Lösung!

DependsOnTargets="GetFrameworkPaths;GetTargetFrameworkVersion"

Wenn man diese Abhängigkeit einträgt, dann sind die Umgebungsvariable vom Framework SDK gesetzt.

Ohne Abhängigkeit:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
   <Target Name="Xslt" >
    <Exec Command="echo FrameworkSDKDir: $(FrameworkSDKDir)"/>
  </Target>
------ Build started: Project: Project, Configuration: Debug Any CPU ------
  FrameworkSDKDir: 
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


Mit Abhängigkeit:
ausblenden Quelltext
1:
2:
3:
4:
5:
<Target Name="Xslt" DependsOnTargets="GetFrameworkPaths;GetTargetFrameworkVersion">

------ Build started: Project: Project, Configuration: Debug Any CPU ------
  FrameworkSDKDir: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


Gruß
Daniel