如何解决在NuGet包中添加解决方案级别的项
| 我想通过NuGet包将解决方案文件夹和解决方案项目(而非项目)添加到解决方案文件中。我想这将通过Powershell完成。我已经查看了NuGet,Powershell和EnvDTE的文档,但无法确定: 我将使用哪些命令/方法? 我将在Init.ps1,Install.ps1或其他位置执行哪个标准脚本?解决方法
这是一个PowerShell脚本,它将在其中创建一个名为Parent的解决方案文件夹,以及另一个名为Child的解决方案文件夹。它还在子解决方案文件夹中添加了一个项目文件(MyProject.csproj)。
# Get the open solution.
$solution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
# Create the parent solution folder.
$parentProject = $solution.AddSolutionFolder(\"Parent\")
# Create a child solution folder.
$parentSolutionFolder = Get-Interface $parentProject.Object ([EnvDTE80.SolutionFolder])
$childProject = $parentSolutionFolder.AddSolutionFolder(\"Child\")
# Add a file to the child solution folder.
$childSolutionFolder = Get-Interface $childProject.Object ([EnvDTE80.SolutionFolder])
$fileName = \"D:\\projects\\MyProject\\MyProject.csproj\"
$projectFile = $childSolutionFolder.AddFromFile($fileName)
此处使用的两个主要Visual Studio界面是Solution2和SolutionFolder。它还使用NuGet提供的Get-Interface函数。
对于仅解决方案的软件包,应将脚本放在init.ps1中,因为install.ps1仅用于基于项目的软件包。首次安装软件包时,Init.ps1为解决方案运行一次,并且每次在Visual Studio中重新打开该解决方案时。
要将任意文件(非项目文件)添加到解决方案文件夹,您将需要执行以下操作:
$vsSolution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
$vsProject = $vsSolution.AddSolutionFolder(\"newFolder\")
$projectItems = Get-Interface $vsProject.ProjectItems ([EnvDTE.ProjectItems])
$projectItems.AddFromFile(\"pathToFileToAdd.txt\")
该PowerShell脚本缺少的是文件顶部的标准参数声明。
param($installPath,$toolsPath,$package,$project)
还缺少的是检查解决方案文件夹和文件夹项目是否已经存在。我将其保留为练习。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。