zoukankan      html  css  js  c++  java
  • Running powershell scripts during nuget package installation and removal

    示范:

     1 param($installPath, $toolsPath, $package)
     2 
     3 function Uninstall-ProjectPackages($project) {
     4     #remove no use dlls
     5     $project.Object.References | Where-Object {  $_.Name -eq 'A.ServiceInterface' } | ForEach-Object { $_.Remove() }
     6     # save project
     7     $project.Save()
     8 }
     9 
    10 
    11 $projects = Get-Project -All
    12 $projects| ForEach-Object { Uninstall-ProjectPackages $_ }

    Running powershell scripts during nuget package installation and removal

    来源:https://everydaylifein.net/netframework/running-powershell-scripts-during-nuget-package-installation-and-removal.html#:~:text=Your%20NuGet%20package%20can%20contain%20PowerShell%20scripts%20which%2C,supported%20in%20Visual%20Studio%202017%20%28%20read%20more%29

    Your NuGet package can contain PowerShell scripts which, based on a convention, will be called during the package installation/removal process.

    • Init.ps1 runs the first time a package is installed in a solution
    • Install.ps1 runs when a package is installed in a project <- no longer supported in Visual Studio 2017 (read more)
    • Uninstall.ps1 runs every time a package is uninstalled <- no longer supported in Visual Studio 2017 (read more)
    • you can read more about it here

    Your scripts should begin with the following line

    param($installPath, $toolsPath, $package, $project)

    Where

    • $installPath path to where the project is installed
    • $toolsPath path to the extracted tools directory
    • $package information about the currently installing package
    • $project reference to the EnvDTE project the package is being installed into

    In order to be executed, the scripts need to be included in the tools directory of the nuget package. You can achieve this by editing your *.nuspec file and adding a file reference.

    <?xml version="1.0"?>
    <package >
      <metadata>...</metadata>
      <files>
    	<file src="scriptsNugetScriptsInstall.ps1" target="toolsInstall.ps1" />
      </files>
    </package>
    

    You will quickly find debugging to be fairly painful if you need to operate with the $project reference. In this case, you are highly encouraged to test all your $project actions in the Visual Studio Package Manager Console by writing

    $project = Get-Project
    

    Now you can interactively test your operations in the console, and you don’t have to constantly pack and install/uninstall your package to check if the scripts work as intended.

  • 相关阅读:
    git 专题
    Android yyyymmdd转成yyyy-MM-dd格式
    Android LayoutInflater.from(context).inflate
    Android TextView内容过长加省略号,点击显示全部内容
    Android 标题栏封装
    Android 自定义Android带图片和文字的ImageButton
    Android 防止按钮连续点击的方法(Button,ImageButton等)
    Android 动态改变布局属性RelativeLayout.LayoutParams.addRule()
    Android ActionBar的Overlay模式如何不遮盖顶部内容的问题
    Android 时间轴TimeLine
  • 原文地址:https://www.cnblogs.com/micro-chen/p/15137620.html
Copyright © 2011-2022 走看看