Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What do the $package and $project params contain in a NuGet install.ps1 script?

I'm writing my first install PowerShell script for a NuGet package. I'm trying to copy a file from the lib folder into the tools folder of another NuGet package. The default install.ps1 script has four parameters, two of which are:

  • $package
  • $project

They appear to be "objects" of some sort, but I'm not sure what properties and methods they contain. I've done some searching online, but have yet to find a reference or any documentation for these arguments.

Looking at this StackOverflow post, the question contains a link to Project Interface. Is that what $project is in the NuGet install.ps1 file?

like image 336
Greg Burghardt Avatar asked Nov 19 '15 16:11

Greg Burghardt


1 Answers

In NuGet 2:

  • $project => EnvDTE.Project - which is the Visual Studio object model for a project.
  • $package => NuGet.IPackage - the NuGet package.

In NuGet 3:

  • $project => EnvDTE.Project
  • $package => ScriptPackage

Note that the $package in NuGet 3 has a fewer properties available so some PowerShell scripts included with existing NuGet packages will not work.

You can always see which .NET Type a PowerShell variable is by using GetType().FullName, e.g.:

Write-Output $project.GetType().FullName
Write-Output $package.GetType().FullName
like image 87
Matt Ward Avatar answered Oct 13 '22 10:10

Matt Ward