是否可以使用c#以编程方式或动态创建VS2005中的项目?如果是这样,有人可以就如何实现这一点提供一些想法或链接吗?
答案 0 :(得分:2)
您还可以使用msbuild api以编程方式创建和编辑msbuild文件。详情请见此处: http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.project.aspx
这是一个创建项目的示例,该项目编译单个.cs文件并引用外部程序集:
Engine engine=new Engine();
engine.BinPath=RuntimeEnvironment.GetRuntimeDirectory();
Project project=engine.CreateNewProject();
project.AddNewImport(@"$(MSBuildBinPath)\Microsoft.CSharp.targets", null);
BuildPropertyGroup props=project.AddNewPropertyGroup(false);
props.AddNewProperty("AssemblyName", "myassembly");
props.AddNewProperty("OutputType", "Library");
BuildItemGroup items=project.AddNewItemGroup();
items.AddNewItem("Reference", "Some.Assembly");
items.AddNewItem("Compile", "somefile.cs");
project.Save("myproject.csproj")
答案 1 :(得分:1)
.csproj文件实际上是表示msbuild执行的XML文档。
可以使用System.xml生成文件,如果需要对其进行验证,则会有详细的架构here。
答案 2 :(得分:0)
Visual Studio项目是“简单”的XML文件。我之所以说,只是因为他们中有很多事情发生。要了解它们的组成:创建一个空项目并在文本编辑器中打开csproj(C#.NET项目)或vsproj(VB.NET项目)。
然后,您可以通过代码生成此XML文件。
答案 3 :(得分:0)
如果您希望能够一遍又一遍地创建相同的内容,Visual Studio支持模板。它甚至具有在从模板创建文件时扩展的宏。例如,当创建基于模板的文件时,$ username $将被登录用户的名称替换。
如果那不是你想要做的,那么你可能会使用Visual Studio可扩展性来控制项目的创建。
答案 4 :(得分:0)
查看此CodePlex项目的源代码:STSDev
它最终成为一个WinForm应用程序,可动态生成带有项目的Visual Studio解决方案。
它适用于Sharepoint,但它所使用的想法是您正在寻找的。 p>
基思
答案 5 :(得分:0)
可以创建Visual Studio项目模板,允许在其中创建子项目。当您在项目创建期间定义要运行的子项目模板时,这不会是真正动态的。
要真正动态,您需要执行以下任一操作:
或者:
答案 6 :(得分:0)
对于Visual Studio 2017,我找到了一个基于envdte的解决方案。你不需要xml操作,它使用visual studio ide。您可以在Nager.TemplateBuilder
找到该项目