gpt4 book ai didi

c# - 以编程方式为 .sln 添加构建配置

转载 作者:行者123 更新时间:2023-11-30 23:11:09 30 4
gpt4 key购买 nike

Q1:我想问一下是否可以通过编程方式为 C# 解决方案添加构建配置?

感谢 this question,我能够读取 .sln 文件并获取其配置.

遗憾的是 ProjectCollection.GlobalProjectCollection 只是一种 setter/getter 。我可以读取并获取所有类型的属性,但它缺少 save 功能。


我知道 .sln 文件是一个常规文件(可以直接写入它,但我更相信原生 API):

{97C119BD-E435-490C-B955-06EA0AD3C08A}.Debug|任何 CPU.ActiveCfg = Debug|任何 CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.Debug|Any CPU.Build.0 = Debug|Any CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.New Debug|Any CPU.ActiveCfg = Debug|Any CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.New Debug|Any CPU.Build.0 = Debug|Any CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.New Debug|Any CPU.Deploy.0 = Debug|Any CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.Observe Debug|Any CPU.ActiveCfg = Debug|Any CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.Observe Debug|Any CPU.Build.0 = Debug|Any CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.Release|任何 CPU.ActiveCfg = Release|任何 CPU

{97C119BD-E435-490C-B955-06EA0AD3C08A}.Release|Any CPU.Build.0 = Release|Any CPU


Q2:New Debug为什么会有3行配置语句?

任何 CPU.Deploy.0 都存在于单个项目中,即使我的解决方案有 3 个。

最佳答案

在此任务上花费了相当长的时间后,我能够使用 VS dll 自动将构建配置添加到我的解决方案中。

下面是一些示例代码:

public void CustomSolutionConfiguration()
{
var slnFile = Path.Combine(@"C:\Work\Dev\MvcConfigurations", @"MvcConfigurations.sln");

//VisualStudio.DTE.14.0 this hardcoded string is VS version dependent!
System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.14.0");
object obj = Activator.CreateInstance(t, true);
var dte = (DTE2)obj;
Solution sln = dte.Solution;
sln.Open(slnFile);
System.Threading.Thread.Sleep(1000);
//Do stuff with the solution

var projs = sln.Projects;
var cnfManager = sln.Projects.Item(1).ConfigurationManager;

var slnCnfgCount = sln.SolutionBuild.SolutionConfigurations.Count;
for (var tt = 1; tt <= slnCnfgCount; tt++)
{
Console.WriteLine(sln.SolutionBuild.SolutionConfigurations.Item(tt).Name);
var tmpItem = sln.SolutionBuild.SolutionConfigurations.Item(tt);
var tmp = sln.SolutionBuild.SolutionConfigurations.Item(tt).SolutionContexts;
//Do some test printing
for (var tt2 = 1; tt2 <= tmp.Count; tt2++)
{
var tmp2 = tmp.Item(tt2);
Console.Write(tmp2.ConfigurationName + "; ");
}

Console.WriteLine();
}

sln.SaveAs(slnFile);
Console.ReadLine();
}

关于c# - 以编程方式为 .sln 添加构建配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44930586/

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