动态生成Visual Studio解决方案和项目文件

时间:2012-09-18 01:40:12

标签: visual-studio templates

如何动态生成Visual Studio解决方案和项目文件? 就像./configure脚本那样。可以接受参数。 例如:在MyProject.sln.template

#if VS_2012
Microsoft Visual Studio Solution File, Format 12.00
#elseif VS_2010
Microsoft Visual Studio Solution File, Format 11.00
#elseif VS_2008
Microsoft Visual Studio Solution File, Format 10.00
#endif
#if VS_2012
Project("{12345678-8B4A-11D0-8D11-00A0C91BC942}") = "Project1", "Project1\Project1.vcproj", "{98765432-E41A-4C56-B16F-263D2C6D6475}"
EndProject
#endif

我应该使用哪些工具?但我不想使用./configure脚本。 这些工具最好适用于任何类型的文本文件。因为我要生成其他类型的文件,而不仅仅是解决方案/项目文件。

2 个答案:

答案 0 :(得分:0)

您可以考虑从配置脚本生成工作空间/项目的cmake。 Cmake实际上非常强大,可以维护与平台无关的构建脚本。但它会满足您的需求。

另一种选择是用于创建sln / vcproj文件的本土工具。它们最终是XML。可能没有书面文档,但您可以从现有工作区进行逆向工程。

答案 1 :(得分:0)

我在github上发现了这个解决方案Nager.TemplateBuilder

此示例使用两个nuget包创建一个Windows桌面应用程序

//Configure Project
var demoProject = new ProjectInfo($"DemoProject", ProjectTemplate.WindowsClassicDesktopWindowsFormsApp);
demoProject.NugetPackages = new List<string> { "System.ServiceModel.NetTcp", "System.Runtime.Serialization.Xml" };

//Configure Solution
var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var solutionInfo = new SolutionInfo("Test", folder);
solutionInfo.ProjectInfos.Add(demoProject);

//Start building machine
var buildingMachine = new SolutionBuildingMachine();
buildingMachine.Build(solutionInfo);
buildingMachine.Dispose();