gpt4 book ai didi

c# - 在 powershell : 中使用 EnvDTE 和 VSLangProj

转载 作者:行者123 更新时间:2023-11-30 17:49:21 29 4
gpt4 key购买 nike

我有一个包含 1 个 Web 应用程序项目的解决方案。我试图向其中添加三个 c# 类库项目,然后将这三个项目的项目引用添加到现有的 Web 应用程序项目中。我正在使用 powershell 执行此操作。我可以将这三个项目添加到解决方案中,但我不知道如何将项目引用添加到现有项目中。我知道我必须使用 VSLangProj.VSProject 才能访问引用,但我不断收到转换错误。

这里是错误:

无法将“System._ComObject#{b1042570-25c6-424a-b58b-56fa83aa828a}”类型的“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)

最佳答案

尝试将 VSLangProj.VSProject 更改为 VSLangProj80.VSProject2。所以:

$vsproj = [VSLangProj.VSProject]$proj.Object

变成:

$vsproj = [VSLangProj80.VSProject2]$proj.Object

参见 VSProject2 Interface MSDN 上的文档(特别是 GuidAttribute)。

关于c# - 在 powershell : 中使用 EnvDTE 和 VSLangProj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864118/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com