如何删除安装软件包后安装的依赖项文件

时间:2015-05-11 05:21:14

标签: powershell nuget nuspec

我正在开发一个取决于Unity和Unity.Mvc4包的nuget包。我的nuspec文件将它们列为依赖项。一切正常,但是当安装我的软件包时,首先安装依赖项。

Unity依赖项将文件部署到我的程序包已移动到其他位置并自定义的项目的根目录,因此我不希望在安装程序包后这些文件存在于根目录中。

有没有办法在nuspec中覆盖依赖文件,或者在安装后运行powershell脚本来清​​理它们?

2 个答案:

答案 0 :(得分:1)

您可以添加一个Powershell脚本,将Unity创建的文件移动到您的实际项目根目录。

有关在Nuget软件包安装期间执行Powershell脚本的信息,请参阅the Nuget documentation。请注意,这些脚本必须放在Nuget包的tools文件夹中才能自动执行。

答案 1 :(得分:0)

这是我的install.ps1中的代码,如果有人想要它作为参考,它就可以了。

# Runs every time a package is installed in a project

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

# $installPath is the path to the folder where the package is installed.
# $toolsPath is the path to the tools directory in the folder where the     package is installed.
# $package is a reference to the package object.
# $project is a reference to the project the package was installed to.

#EnvDTE Project Reference
#https://msdn.microsoft.com/en-us/library/envdte.project.projectitems.aspx

function deleteProjectItem($fileName) {
    $file = $null
    foreach ($item in $project.ProjectItems) {
        if ($item.Name.Equals($fileName, "InvariantCultureIgnoreCase")) {
            $file = $item
            break
        }
    }
    if ($file -ne $null) {
        Write-Host "Deleting: $($item.Name) ..." -NoNewline
        $item.Delete()
        Write-Host "Deleted!"
    }
}

deleteProjectItem "BootStrapper.cs"
deleteProjectItem "job_scheduling_data_2_0.xsd"
deleteProjectItem "Unity.Mvc4.README.txt"