OpenVS2005SolutionFile(.sln)intoMemory非工作方法示例:privateSolution2OpenSolution(stringfilePath){Solution2sln;sln.Open(文件路径);返回sln;如果我有Solution2的实例,那么我可以调用方法Open;但是如何获取Solution2的实例?我的目标是获得足够的项目并阅读其中的一些设置......但这很容易获得解决方案。提前致谢,Luis您可以通过编程方式创建VisualStudio的隐藏实例,然后使用它来操作您的解决方案。此示例将列出存在于给定解决方案中的所有项目。使用系统;使用System.Runtime.InteropServices;使用EnvDTE;使用EnvDTE80;namespaceso_sln{classProgram{[STAThread]staticvoidMain(string[]args){System.Typet=System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0",true);DTE2dte=(EnvDTE80.DTE2)System.Activator.CreateInstance(t,true);//请参阅http://msdn.microsoft.com/en-us/library/ms228772.aspx了解MessageFilter的//代码-只需将其粘贴到so_sln命名空间中。MessageFilter.Register();dte.Solution.Open(@"C:pathtomy.sln");foreach(dte.Solution.Projects中的项目项目){控制台。WriteLine(项目名称);}dte.Quit();}}publicclassMessageFilter:IOleMessageFilter{...Continuesathttp://msdn.microsoft.com/en-us/library/ms228772.aspx(STAThread和MessageFilter废话是“由于外部多线程之间的线程争用问题应用程序和VisualStudio”,不管是什么意思。粘贴来自http://msdn.microsoft.com/en-us/library/ms228772.aspx的代码以使其工作。)Solution2是一个接口,而不是一个类。您不能直接创建Solution2类型的对象,您只能将对象引用为包含Solution2接口的Solution2。据我所知,实现Solution2接口的类仅作为VisualStudio集成中接口集合的一部分提供,因此您必须执行类似于RichieHindle提到的操作并创建一个新的隐藏VisualStudio实例来加载解决方案。如果你只想从sln文件中获取一些设置,我可能建议你自己解析它,文件格式非常简单。如果您尝试提取设置,很可能会出现奇怪的边缘情况,如果VisualStudio为您解析sln,则解析您自己的sln将不起作用并且无法解决您尝试执行的操作。我对此没有太多经验,但请尝试这篇msdn文章。这不是您要查找的内容,但它们确实在示例代码中实例化了一个solution2对象。Solution2等基本上是您必须与您的应用程序一起重新分发的VisualStudioSDK的一部分(具有所有许可影响)。由于.sln文件是普通的旧XML,您始终可以在XmlDocument中打开它,然后在那里打开XPath。以上就是C#学习教程:打开VS2005解决方案文件(.sln)进入内存分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
