Stylus Studio включает в себя XSLT и XQuery, и с любым из них вы можете писать текстовые файлы. Таким образом, вы можете вручную написать файл .sln
, если у вас есть правильный источник - потому что файлы .sln
не являются XML. Файлы проекта, такие как .vbproj
или .csproj
, представляют собой XML и могут быть легко созданы Stylus Studio.
Это то, что вы спрашиваете?
Если у вас есть программа XSLT или XQuery, вы можете сгенерировать код для преобразования. Это создаст проект Visual Studio для вас. Для XQuery он будет использовать .Net Saxon XQuery engine. Для XSLT поддерживаются несколько различных механизмов XSLT для .Net.
Используйте параметры "XQuery> Создать код> Создать код C # ..." или "XSLT> Создать код> Создать код C # ...", чтобы фактически создать код и файл .sln
оператора.
Если, тем не менее, по какой-то причине вы хотите использовать XSLT внутри Stylus Studio для создания файла .sln, вот как можно это сделать.
Пример входного файла:
FAE04EC0-301F-11D3-BF4B-00C04F79EFBC
Сторожевая собака
DB3FBB37-100C-40DD-B154-153E3F3A68FF
Пример файла XSLT для создания .sln
сверху .xml
:
<?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>
</xsl:text>
<xsl:text>Microsoft Visual Studio Solution File, Format Version 10.00
</xsl:text>
<xsl:text># Visual Studio 2008
</xsl:text>
<xsl:apply-templates select="projects/project" mode="a"/>
<xsl:text>Global
</xsl:text>
<xsl:text>	GlobalSection(SolutionConfigurationPlatforms) = preSolution
</xsl:text>
<xsl:text>		Debug|Any CPU = Debug|Any CPU
</xsl:text>
<xsl:text>		Release|Any CPU = Release|Any CPU
</xsl:text>
<xsl:text>	EndGlobalSection
</xsl:text>
<xsl:text>	GlobalSection(ProjectConfigurationPlatforms) = postSolution
</xsl:text>
<xsl:apply-templates select="projects/project" mode="b"/>
<xsl:text>	EndGlobalSection
</xsl:text>
<xsl:text>	GlobalSection(SolutionProperties) = preSolution
</xsl:text>
<xsl:text>		HideSolutionNode = FALSE
</xsl:text>
<xsl:text>	EndGlobalSection
</xsl:text>
<xsl:text>EndGlobal
</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>}"
</xsl:text>
<xsl:text>EndProject
</xsl:text>
</xsl:template>
<xsl:template match="project" mode="b">
<xsl:text>		{</xsl:text>
<xsl:value-of select="guid"/>
<xsl:text>}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
</xsl:text>
<xsl:text>		{</xsl:text>
<xsl:value-of select="guid"/>
<xsl:text>}.Debug|Any CPU.Build.0 = Debug|Any CPU
</xsl:text>
<xsl:text>		{</xsl:text>
<xsl:value-of select="guid"/>
<xsl:text>}.Release|Any CPU.ActiveCfg = Release|Any CPU
</xsl:text>
<xsl:text>		{</xsl:text>
<xsl:value-of select="guid"/>
<xsl:text>}.Release|Any CPU.Build.0 = Release|Any CPU
</xsl:text>
</xsl:template>
</xsl:stylesheet>