2012-08-10 62 views
4

我在这里遇到了一些麻烦。如何使用模板生成解决方案?

我希望能够使用与VS2010使用的模板相似的模板来生成C#项目(和解决方案)(我们假设一个C#控制台应用程序)。 基本上我想要一个方法GenerateConsoleApplication就是这么做的。但是由于我需要生成其中的几个,我想使用一个模板来填充将与.csproj和app.xml文件一起生成的program.cs类的Main方法。

public void GenerateConsoleApplication() 
{ 
    var projectName = "MyConsoleApplication"; 
    var projectLocation = "C:\temp"; 

    // what goes here so that it creates a solution Visual Studio that I could use ? 
} 

我查找了VS2010使用的项目模板来生成一个C#控制台应用程序,我想我可以修改它以适合我的需要。但我不知道我需要编写哪些代码才能使用该模板并生成新解决方案的所有文件。 有谁知道该怎么做?或者如果它甚至是可能的?

我知道我只能写csproj文件和其他文件,但我认为模板可以更容易地进行更改。

+2

您是否阅读过MSDN上的[如何创建项目模板](http://msdn.microsoft.com/en-us/library/xkh1wxd8.aspx)文档?您是否阅读了[this](http://msdn.microsoft.com/zh-cn/magazine/cc188697.aspx)MSDN杂志的文章? – Oded 2012-08-10 10:00:34

+0

是的,我做到了。但我不想为视觉创建解决方案模板。我想写一段代码来生成解决方案。 – user1589859 2012-08-10 10:04:12

+0

尝试[Templify](https://github.com/endjin/Templify)。 [Sharp Architecture](http://sharparchitecture.net/)使用它来生成解决方案 – Eranga 2012-08-10 10:06:03

回答

1

刚刚找到我需要做的。

问题归结为模板文件的解析。 一旦我得到解析器,那么我可以用适当的值替换标签。我想使用Visual Studio的解析器来做到这一点,并稍微修改它已经使用的模板,但这是不可能的。

所以人们必须编写自己的解析器并使用它来生成文件。 然后,可以使用Regex用Regex.Replace(String,String,MatchEvaluator)方法替换模板文件的标记。

+1

为什么你想重新创建项目模板(当使用正则表达式创建和/或替换XML文件中的东西,即.csproj和.sln文件时,你会遇到麻烦)那里可用的解决方案? :-) – CodeCaster 2012-08-10 11:48:44