Visual studio 2010 从VisualStudio2010的实验实例获取当前项目目录?

Visual studio 2010 从VisualStudio2010的实验实例获取当前项目目录?,visual-studio-2010,uml,Visual Studio 2010,Uml,我目前正在实施uml验证 当我调试时,它会为我打开一个新的VisualStudio实验实例来验证uml图 当visual studio的实验实例正在运行时,是否有方法获取用户选择的项目目录路径 更清楚地说 项目A-有VSIX和类库组件来验证uml验证。这些类库组件作为MEF组件添加到VSIX中 当我调试项目时->将打开VS的新实验实例->然后创建一个新项目(ctrl+shift+N)->选择建模项目->浏览到目录(存储建模项目)->将项目命名为“MYMODEL”->然后按OK 现在,在我的项目A

我目前正在实施uml验证

当我调试时,它会为我打开一个新的VisualStudio实验实例来验证uml图

当visual studio的实验实例正在运行时,是否有方法获取用户选择的项目目录路径

更清楚地说

项目A-有VSIX和类库组件来验证uml验证。这些类库组件作为MEF组件添加到VSIX中

当我调试项目时->将打开VS的新实验实例->然后创建一个新项目(ctrl+shift+N)->选择建模项目->浏览到目录(存储建模项目)->将项目命名为“MYMODEL”->然后按OK

现在,在我的项目A中,我需要MYMODEL的路径。你能告诉我怎么走那条路吗


提前感谢,

这有点迂回,但很有效。 您需要对EnvDTE和Microsoft.VisualStudio.Shell.Immutable.10.0以及常用位的引用

using System.ComponentModel.Composition;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.Modeling.Validation;
using Microsoft.VisualStudio.Uml.AuxiliaryConstructs;

namespace Validation
{
  public class MyValidationExtensions
  {
    [Import]
    public Microsoft.VisualStudio.Shell.SVsServiceProvider ServiceProvider { get; set; }

    [Export(typeof(System.Action<ValidationContext, object>))]
    [ValidationMethod(
     ValidationCategories.Open
     | ValidationCategories.Menu)]
    public void ValidateClassNames
      (ValidationContext context,
      // This type determines what elements 
      // will be validated by this method:
       IModel elementToValidate)
    {
      IModelStore store = elementToValidate.GetModelStore();
      EnvDTE.DTE dte = ServiceProvider.GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
      //dynamic projects = dte.ActiveSolutionProjects;

      foreach (EnvDTE.Project project in dte.Solution.Projects)
      {
        IModelingProject mp = project as IModelingProject;
        if (mp.Store == store)
        {
          System.Windows.Forms.MessageBox.Show(project.FullName);
        }
      }

    }
    // Add more validation methods for different element types.
  }
}
使用System.ComponentModel.Composition;
使用Microsoft.VisualStudio.ArchitectureTools.Extensibility;
使用Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
使用Microsoft.VisualStudio.Modeling.Validation;
使用Microsoft.VisualStudio.Uml.AuxiliaryConstructs;
命名空间验证
{
公共类MyValidationExtensions
{
[进口]
公共Microsoft.VisualStudio.Shell.SVsServiceProvider服务提供程序{get;set;}
[导出(类型(系统动作))]
[验证方法](
验证类别。打开
|ValidationCategories.Menu)]
公共void验证类名称
(ValidationContext上下文,
//此类型确定了哪些元素
//将通过此方法进行验证:
IModel元素(验证)
{
IModelStore=elementToValidate.GetModelStore();
EnvDTE.DTE DTE=ServiceProvider.GetService(typeof(EnvDTE.DTE))作为EnvDTE.DTE;
//动态项目=dte.ActiveSolutionProjects;
foreach(dte.Solution.Projects中的EnvDTE.Project项目)
{
IModelingProject mp=项目作为IModelingProject;
if(mp.Store==Store)
{
System.Windows.Forms.MessageBox.Show(project.FullName);
}
}
}
//为不同的元素类型添加更多验证方法。
}
}

什么是“Visual Studio的实验版本”以及您是如何获得它的?安装VisualStudio SDK,然后:创建类型为“vs(集成)软件包”的新项目并按“调试”,或者检查“vs SDK”组的开始菜单,您将在工具中找到它。exerceimentalinstance只是“devenv.exe/rootsuffix Exp”,它将IDE切换为使用不同的、易于获取的注册表项和文件系统文件夹