gpt4 book ai didi

c# - 在内存中打开一个 VS 2005 解决方案文件 (.sln)

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

我想在内存中打开一个现有的 .sln 文件。

无效方法示例:

private Solution2 OpenSolution(string filePath)
{
Solution2 sln;
sln.Open(filePath);
return sln;
}

如果我有一个 Solution2 的实例,那么我可以调用方法 Open;但是我怎样才能得到 Solution2 的实例

然后我的目标是获得足够的项目并阅读它的一些设置...但是访问解决方案很容易。

最佳答案

您可以通过编程方式创建 Visual Studio 的隐藏实例,然后使用它来操作您的解决方案。此示例将列出给定解决方案中的所有项目。

using System;
using System.Runtime.InteropServices;
using EnvDTE;
using EnvDTE80;

namespace so_sln
{
class Program
{
[STAThread]
static void Main(string[] args)
{
System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0", true);
DTE2 dte = (EnvDTE80.DTE2)System.Activator.CreateInstance(t, true);

// See http://msdn.microsoft.com/en-us/library/ms228772.aspx for the
// code for MessageFilter - just paste it into the so_sln namespace.
MessageFilter.Register();

dte.Solution.Open(@"C:\path\to\my.sln");
foreach (Project project in dte.Solution.Projects)
{
Console.WriteLine(project.Name);
}

dte.Quit();
}
}

public class MessageFilter : IOleMessageFilter
{
... Continues at http://msdn.microsoft.com/en-us/library/ms228772.aspx

(STAThread 和 MessageFilter 的废话是“由于外部多线程应用程序和 Visual Studio 之间的线程争用问题”,无论那是什么意思。粘贴来自 http://msdn.microsoft.com/en-us/library/ms228772.aspx 的代码使其工作。)

关于c# - 在内存中打开一个 VS 2005 解决方案文件 (.sln),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1172383/

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