以编程方式生成VisualStudio解决方案我想在.net中编写一个向导,以编程方式生成带有一些项目的VisualStudio解决方案。我将有一个XML文件,其中包含需要包含在项目中的文件的详细信息,以及它们各自的获取路径和项目名称的列表。有什么办法可以实现这一点,那么VisualStudioSDK就是可行的方法。创建文件的方法有很多,我认为也可以根据项目模板制作项目。例如,您可以创建一个新的“asp.netmvc”项目或类库。您甚至可以创建自己的模板。我很确定你只能在VS中执行此操作。不然的话,生成project和sln文件生成xml文件也没什么问题,这也是他们最终是xml文件的好处之一。您只需要生成一些ProjectdGuid,但我认为这将非常简单且完全“合法”。进步很大!查看文本模板转换工具包(T4)。它非常可爱并且支持在ASP.NETMVC中生成一些文件。ScottHanselman有一篇关于该主题的精彩介绍性文章。您可以使用一小段代码或脚本来完成此操作。VisualStudio将为您填写大部分GUID...我将此类内容作为一次性整理项目。它不是100%完美的,您最终可能会从代码处理项目名称的方式中得到重复项。希望它能给你指明方向。我们在这里做的是设置解决方案文件的序言,然后插入每个解决方案(你需要项目类型guid,你可以在这里看到FAE,但不是项目自己的GUID,VS会在保存时插入解决方案文件)。然后我们为每个项目插入构建配置。我为每个项目设置了大约一打配置(不同的发布和调试设置),但我在这里将它们压缩为两个。staticvoidMain(string[]args){if(args.Count()!=2){Usage();返回;}varrootDir=args[0];var输出=args[1];varfiles=Directory.EnumerateFiles(rootDir,"*.*proj",SearchOption.AllDirectories);varconfigs=newStringBuilder();varconfigDefs=newstring[]{".Debug|AnyCPU.ActiveCfg=Debug|AnyCPU",".Release|AnyCPU.ActiveCfg=Release|AnyCPU","Other_configurations_see_solution_for_how"};使用(varsw=newStreamWriter(输出)){sw.WriteLine(Resources.Head);foreach(varfileinfiles){varrelpath=file.Substring(rootDir.Length+1);varsplit=relpath.Split('\');变种名称=拆分[0];变种路径=relpath;sw.WriteLine("项目("{{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}}")="{0}","{1}","{0}"",名称,路径);sw.WriteLine("EndProject");foreach(varconfigDefinconfigDefs){configs.AppendLine(string.Format("{0}{1}",file,configDef));}}sw.WriteLine(@"GlobalGlobalSection(SolutionConfigurationPlatforms)=preSolutionDebug|任何CPU=调试|任何CPU版本|任何CPU=版本|任何CPU...Other_configurations_see_solution_for_how...EndGlobalSectionGlobalSection(ProjectConfigurationPlatforms)=postSolution");sw.WriteLine(configs.ToString());sw.WriteLine(Resources.Tail);}}标题看起来有点像:MicrosoftVisualStudioSolutionFile,FormatVersion11.00#VisualStudio2010但我认为第一行有控制字符-小心!尾部看起来像GlobalSection(SolutionProperties)=preSolutionHideSolutionNode=FALSEEndGlobalSectionEndGlobal我们构建了一个名为TreeSurgeon的工具,它正是这样做的,并且正在审查和讨论随着时间的推移改变(或删除它),因为它已经创建,但它会做你所要求的就到这里(而且是开源的)以上就是《C#学习教程:以编程方式生成VisualStudio解决方案》分享的全部内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
