如何动态生成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
脚本。
这些工具最好适用于任何类型的文本文件。因为我要生成其他类型的文件,而不仅仅是解决方案/项目文件。
答案 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();