【发布时间】:2014-02-18 20:02:51
【问题描述】:
我有一个包含 1 个 Web 应用程序项目的解决方案。我正在尝试向其中添加三个 c# 类库项目,然后将这三个项目的项目引用添加到现有的 Web 应用程序项目中。我正在使用 powershell 执行此操作。我能够将这三个项目添加到解决方案中,但我不知道如何将项目引用添加到现有项目中。我知道我必须使用 VSLangProj.VSProject 才能访问引用,但我不断收到转换错误。
这里是错误:
无法将“System._ComObject”类型的“System._ComObject”值转换为“VSLangProj.VSProject”类型。
这是我到目前为止的相关代码。
[void][System.Reflection.Assembly]::LoadWithPartialName("envdte.dll")
[void][System.Reflection.Assembly]::LoadWithPartialName("envdte80.dll")
[void][System.Reflection.Assembly]::LoadWithPartialName("VSLangProj.dll")
[void][System.Reflection.Assembly]::LoadWithPartialName("VSLangProj80.dll")
$envdte = [System.Runtime.InteropServices.Marshal]::GetActiveObject("VisualStudio.DTE.12.0")
$envdte.Solution.Open($FullPathtoSolution)
$envdte.Solution.AddFromFile($FUllPathtoNewProject1)
$envdte.Solution.AddFromFile($FUllPathtoNewProject2)
$envdte.Solution.AddFromFile($FUllPathtoNewProject3)
$envdte.Solution.SaveAs($FullPathtoSolution)
foreach ($proj in $envdte.Solution.Projects)
{
$proj.Kind #Prints {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
$proj.Name #Prints the name of my web application project like it should
$vsproj = [VSLangProj.VSProject]$proj.Object #this line causes the error
$vsproj.References.AddProject($NewProject1Name)
$vsproj.References.AddProject($NewProject2Name)
$vsproj.References.AddProject($NewProject3Name)
}
$envdte.Solution.SaveAs($FullPathtoSolution)
【问题讨论】:
标签: c# .net powershell envdte