【发布时间】:2011-03-31 01:41:35
【问题描述】:
我正在为 VS2010 编写自定义 WPF 起始页。我让它在视图中显示我使用的常见解决方案列表。
现在,我想在选择时在 VS 中打开解决方案。
有什么想法吗?我正在研究 DTE 的东西,但收效甚微。在我深入挖掘之前,DTE 是正确的前进方式,还是有其他方式?
【问题讨论】:
标签: c# wpf visual-studio-2010 start-page
我正在为 VS2010 编写自定义 WPF 起始页。我让它在视图中显示我使用的常见解决方案列表。
现在,我想在选择时在 VS 中打开解决方案。
有什么想法吗?我正在研究 DTE 的东西,但收效甚微。在我深入挖掘之前,DTE 是正确的前进方式,还是有其他方式?
【问题讨论】:
标签: c# wpf visual-studio-2010 start-page
你不能简单地以解决方案的路径作为参数运行它吗?
类似:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = vsdir;
startInfo.Arguments = pathtosolution;
Process.Start(startInfo);
(如果我没听错的话)
【讨论】:
我找到了解决办法。
在Visual Studio Template生成的Utilities类中有如下静态方法:
public static DTE2 GetDTE(object dataContext)
{
ICustomTypeDescriptor typeDescriptor = dataContext as ICustomTypeDescriptor;
Debug.Assert(typeDescriptor != null, "Could not get ICustomTypeDescriptor from dataContext. Was the Start Page tool window DataContext overwritten?");
PropertyDescriptorCollection propertyCollection = typeDescriptor.GetProperties();
return propertyCollection.Find("DTE", false).GetValue(dataContext) as DTE2;
}
通过将 DataContext 从我的 Control 传递到 GetDTE() 方法,我可以做到这一点:
var dte = Utilities.GetDTE(dataContext);
dte.Solution.Open(fullPathToSolution);
【讨论】: