运行ENVDTE解决方案项目

时间:2014-04-24 14:22:06

标签: javascript iterator envdte enumerator

我正在使用自定义向导技术在VS 2010中编写C ++项目模板。

在default.js中,保存后面的JavaScript代码的文件,我想获取当前生成的项目,并在特定的“apps”子文件夹中的现有VS解决方案中找到它。

我有一个C#工作代码可以执行上述操作,但我必须在JavaScript中重写它。

我的C#代码是:

Projects ps = solution.Projects;


var item = ps.GetEnumerator();
while (item.MoveNext())
{
      var project = item.Current as Project;
      string name = project.Name;
      if (name == "apps")
      {
         SolutionFolder folder = (SolutionFolder)project.Object;
         p = folder.AddFromFile(newProjDir + "\\" + projName + ".vcxproj");
      }
}

在JavaScript中,我写道:

var ps = Solution.Projects;

但是现在我没有成功迭代这些项目,就像我在c#中所做的那样。

当我试图写入JS文件时:

var item = ps.GetEnumerator();

我收到了运行时错误:

  

Object不支持此属性或方法

您知道有关迭代Projects系列的任何方法吗?是否有一个JS函数,其行为类似于GetEnumerator()

2 个答案:

答案 0 :(得分:0)

正如您所知,JS是一种客户端语言。

您无法从服务器获取信息(如Solution.Projects)。

但您可以编写Web服务并从您的网页中使用它来获取信息。

答案 1 :(得分:0)

我找到了自己的方式:

for (var i = 1; i <= solution.Projects.Count; i++) 
        {
            if(Solution.Projects.Item(i).Name == "apps")        
            {
                appsFolder = Solution.Projects.Item(i);
                project = appsFolder.Object.AddFromFile(newProjectPath + "\\" + strProjectName + "\\" + strProjectName + ".vcxproj");
                break;
            }
        }

谢谢大家的帮助:)