1 개의 웹 응용 프로그램 프로젝트가 포함 된 솔루션이 있습니다. 3 개의 C# 클래스 라이브러리 프로젝트를 추가하고이 세 프로젝트의 프로젝트 참조를 기존 웹 응용 프로그램 프로젝트에 추가하려고합니다. PowerShell을 사용하여이 작업을 수행합니다. 세 가지 프로젝트를 솔루션에 추가 할 수 있지만 기존 프로젝트에 프로젝트 참조를 추가하는 방법을 알 수 없습니다. 참조에 액세스하려면 VSLangProj.VSProject를 사용해야한다는 것을 알고 있지만 계속 변환 오류가 발생합니다.Powershell에서 EnvDTE 및 VSLangProj 사용 :
유형의 "System._ 하여 ComObject"값을 변환 할 수 없습니다. "시스템 _ComObject 번호 {b1042570-25c6-424a-b58b-56fa83aa828a}"를 입력하는 "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)
을, 또한 VSLangProj.VSProject'로 주조 할 수있다 '뿐만 아니라. –
VSProject2는 VSProject에서 파생 되었기 때문에 의미가 있지만 COM이 캐스팅을 처리하는지 확실하지 않습니다. 오류 메시지에 나열된 GUID는 VSProject2입니다. – areyling