gpt4 book ai didi

c# - 不使用visual studio制作解决方案文件

转载 作者:行者123 更新时间:2023-11-30 20:40:31 25 4
gpt4 key购买 nike

我正在构建一个生成大量代码文件(cpp、h、hpp 文件)的程序。使用“生成”按钮触发新文件的制作,我想添加另一个功能,我还希望“生成”按钮在使用正确的设置生成文件后制作一个sulotion(用于visual studio),所以用户不必处理它。所以用户点击“生成”,生成新文件,他还可以在 visual studio 中打开整个项目,以正确的顺序固定。

我该怎么做?

最佳答案

您可以借鉴自定义 Visual Studio Project System 示例并使用 Microsoft.Build.dll 的 Microsoft.Build.Construction 命名空间 组装。

MSDN:

The Microsoft.Build namespaces contain types that provide programmatic access to, and control of, the MSBuild engine.

ProjectRootElement是用于以编程方式向解决方案添加文件和创建解决方案的主要类。

Represents an MSBuild project, a targets file, or any other file that conforms to MSBuild project file schema. This class and its related classes allow a complete MSBuild project or targets file to be read and written. Tell me more...

例如,要开始您的解决方案,您可以:

var project = ProjectRootElement.Create();

project.DefaultTargets = "Build";
project.ToolsVersion = "4.0";

...要添加文件,您可以执行以下操作:

foreach (var unescapedFile in allFiles)
{
var file = ProjectCollection.Escape(unescapedFile);
var ext = Path.GetExtension(file);
var fileType = "Content";
folders.Add(Path.GetDirectoryName(file));
var item = project.AddItem(fileType, file);
.
.
.
}

...最终确定解决方案:

var imports = project.AddPropertyGroup();
imports.AddProperty("VisualStudioVersion", "10.0")
.Condition = " '$(VisualStudioVersion)' == '' ";

(customization ?? DefaultProjectCustomization.Instance).Process(
project,
new Dictionary<string, ProjectPropertyGroupElement>
{
{"Globals", globals},
{"Imports", imports},
{"Debug", debugGroup},
{"Release", releaseGroup}
}
);

...最后将解决方案保存为 XML:

project.Save(writer);

模板

编辑:感谢millimoose对于下面评论中的这个建议:)

如果您想加载一个"template"项目文件作为新项目的基础,您可能需要查看 ProjectRootElement.TryOpen()。它将返回一个 ProjectRootElement,您也可以使用它来修改和/或添加新项目,将结果保存为一个新项目。

例如

using (var writer = new StreamWriter("NewProject.csproj", false, Encoding.UTF8))
{
var project = ProjectRootElement.TryOpen("my template.csproj");
project.AddItem("Content", "miss piggy.png");
project.Save(writer);
}

告诉我更多

关于c# - 不使用visual studio制作解决方案文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33329144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com