2009-07-13 10 views
0

Ich frage mich, ob es möglich ist, eine Art von Vorlage zu generieren, die ich einer XML oder XSL-Datei in Stift geben und erzeugen C# -Codeist es möglich, Visual Studio-Lösungsdateien mit StylusStudio zu generieren?

ich einige CS- gemacht und funktioniert gut, aber ich kann nicht mit csproj und SLN-Dateien,

so, das ist, warum ich

i dlls auf C# programmieren bin gefragt ist eine n-Tier-Programmierung

+0

Worauf erhalten Sie? Warum möchten Sie eine SLN-Datei mit einem XML-Tool anstelle von VS selbst oder einem Meta-Builder wie CMake oder Premake erstellen? Vielleicht bearbeiten Sie Ihre Frage, um die Gründe zu erklären, um bessere Antworten zu erhalten. – haffax

Antwort

0

Stylus Studio enthält sowohl XSLT und XQuery, und mit jeder können Sie Textdateien schreiben. So können Sie manuell eine .sln Datei schreiben, wenn Sie die richtige Quelle haben - weil .sln Dateien nicht XML sind. Projektdateien, wie .vbproj oder .csproj, sind XML und können einfach mit Stylus Studio erstellt werden.

Sind Sie das, was Sie fragen?

Wenn Sie über ein XSLT- oder XQuery-Programm verfügen, können Sie Code zum Ausführen dieser Transformation generieren. Es wird ein Visual Studio-Projekt für Sie erstellen. Für XQuery wird die .Net Saxon XQuery-Engine verwendet. Für XSLT werden mehrere verschiedene XSLT-Engines für .Net unterstützt.

Verwenden Sie die Optionen "XQuery> Code generieren> C# -Code generieren ..." oder "XSLT> Code generieren> C# -Code generieren ...", um den Code und die begleitende Datei .sln tatsächlich zu erstellen.

Wenn Sie jedoch aus irgendeinem Grund XSLT in Stylus Studio verwenden möchten, um eine .sln-Datei zu erstellen, gehen Sie folgendermaßen vor.

Beispieleingabedatei: FAE04EC0-301F-11D3-BF4B-00C04F79EFBC Watchdog DB3FBB37-100C-40DD-B154-153E3F3A68FF

Beispiel XSLT-Datei .sln von oben .xml zu erstellen:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
     <xsl:text>&#xD;&#xA;</xsl:text> 
     <xsl:text>Microsoft Visual Studio Solution File, Format Version 10.00&#xD;&#xA;</xsl:text> 
     <xsl:text># Visual Studio 2008&#xD;&#xA;</xsl:text> 
     <xsl:apply-templates select="projects/project" mode="a"/> 
     <xsl:text>Global&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;GlobalSection(SolutionConfigurationPlatforms) = preSolution&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;&#9;Debug|Any CPU = Debug|Any CPU&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;&#9;Release|Any CPU = Release|Any CPU&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;EndGlobalSection&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;GlobalSection(ProjectConfigurationPlatforms) = postSolution&#xD;&#xA;</xsl:text> 
     <xsl:apply-templates select="projects/project" mode="b"/> 
     <xsl:text>&#9;EndGlobalSection&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;GlobalSection(SolutionProperties) = preSolution&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;&#9;HideSolutionNode = FALSE&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;EndGlobalSection&#xD;&#xA;</xsl:text> 
     <xsl:text>EndGlobal&#xD;&#xA;</xsl:text> 
    </xsl:template> 

    <xsl:template match="project" mode="a"> 
     <xsl:text>Project("{"</xsl:text> 
     <xsl:value-of select="../guid"/> 
     <xsl:text>}") = "</xsl:text> 
     <xsl:value-of select="name"/> 
     <xsl:text>", "</xsl:text> 
     <xsl:value-of select="name"/> 
     <xsl:text>\</xsl:text> 
     <xsl:value-of select="name"/> 
     <xsl:text>.csproj", "{</xsl:text> 
     <xsl:value-of select="guid"/> 
     <xsl:text>}"&#xD;&#xA;</xsl:text> 
     <xsl:text>EndProject&#xD;&#xA;</xsl:text> 
    </xsl:template> 

    <xsl:template match="project" mode="b"> 
     <xsl:text>&#9;&#9;{</xsl:text> 
     <xsl:value-of select="guid"/> 
     <xsl:text>}.Debug|Any CPU.ActiveCfg = Debug|Any CPU&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;&#9;{</xsl:text> 
     <xsl:value-of select="guid"/> 
     <xsl:text>}.Debug|Any CPU.Build.0 = Debug|Any CPU&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;&#9;{</xsl:text> 
     <xsl:value-of select="guid"/> 
     <xsl:text>}.Release|Any CPU.ActiveCfg = Release|Any CPU&#xD;&#xA;</xsl:text> 
     <xsl:text>&#9;&#9;{</xsl:text> 
     <xsl:value-of select="guid"/> 
     <xsl:text>}.Release|Any CPU.Build.0 = Release|Any CPU&#xD;&#xA;</xsl:text> 
    </xsl:template> 
</xsl:stylesheet> 
0

Visual Studio-Lösung Dateien nicht XML sind, so würde ich nicht erwarten Stylus Studio viel mit ihnen zu tun.

Snippet einer Lösung Datei:

 

Microsoft Visual Studio Solution File, Format Version 10.00 
# Visual Studio 2008 
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HttpsUrlWithPort", "HttpsUrlWithPort\HttpsUrlWithPort.csproj", "{9FD67B56-9D49-4989-89D0-06A29ACAA5A3}" 
EndProject 
+0

Ich bin mir nicht sicher, was StylusStudio ist, aber ich glaube, dass Visual Studio Solution-Dateien in einem XML-Format vorliegen. – NotDan

+2

@NotDan: Sie denken über Projektdateien nach. –

1

John is correct, dann würden Sie besser mit Notizblock, aber es ist ein free version of Visual Studio 2008, dass Sie viele Arten von Lösung erstellen können, wenn Sie nicht wollen, in eine Lizenz investieren. Wenn Sie versuchen, Template-basierte Code-Generierung durchzuführen, werfen Sie einen Blick auf CodeSmith.

0

A: Verwenden Sie t4!

Die T4-Codegenerierung von Visual Studio Vorlagen mithilfe der T4-Vorlagensprache von Microsoft erstellen.

F: Ich möchte einen Teil des Codes für meine Anwendung generieren, und Microsoft hat einen Codegenerator, t4.

A: Microsoft verfügt über ein Codegenerierungstool T4, das für Text Transformation Templating Toolkit steht.

T4 kommt mit Visual Studio 2008, oder Sie können es herunterladen, wenn Sie VS 2005 verwenden.