簡體   English   中英

在安裝NuGet之后運行PowerShell腳本

[英]Run PowerShell script after NuGet install

我正在嘗試通過PowerShell編輯csproj中當前安裝的NuGet軟件包庫的<Reference> XML節點,以添加Condition="..."屬性。

我可以在軟件包的安裝過程中調用PowerShell Install.ps1腳本,但此時<Reference>節點不存在。

如果我手動將所需的Condition="..."屬性添加到csproj,則在更新NuGet軟件包時將其刪除。

NuGet添加已安裝庫的<Reference>節點之后,是否可以自動運行PowerShell腳本? 還是一種在安裝軟件包時以某種方式修改NuGet添加的節點的方法?

一種選擇是默認情況下不讓NuGet添加引用。 刪除您的lib文件夾,然后將程序集放在程序包中的其他位置(引用?)。 創建一個{NuGetPkgName} .targets文件,並將其放在程序包的build文件夾中。 該目標文件將“導入”到您添加NuGet pkg的任何項目中。 然后,在目標文件中,可以使用所需的條件屬性將引用添加到程序集中。

我還沒有時間實施Keith Hill的解決方案,因此不得不通過批處理文件手動調用我的腳本。 如果有幫助,請使用PowerShell腳本。

目標是在調試中從MyProjectName開頭的所有項目中排除對MyPackageName的引用。

# Get a list of matching csproj files recursively
$csprojs = gci $PSScriptRoot -rec -include MyProjectName.*.csproj

# The value of the condition attribute we want to set
$condition = @'
'$(Configuration)' != 'Debug'
'@

foreach ($csproj in $csprojs)
{
    [xml]$xml = Get-Content $csproj;
    foreach ($reference in $xml.Project.ItemGroup.Reference | ? { $_.Include -match '^MyPackageName' })
    {
        $reference.SetAttribute('Condition', $condition);
    }

    $xml.Save($csproj);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM