[英]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.