Nuget package 如何在NuGet软件包安装期间获取文件内容

Nuget package 如何在NuGet软件包安装期间获取文件内容,nuget-package,powershell-5.0,Nuget Package,Powershell 5.0,我有一个nuget软件包解决方案,安装得很好。我现在需要修改目标项目的Properties\AssemblyInfo.cs文件以添加一些代码 我有一个Install.ps1脚本,所以我要将我的powershell脚本添加到此脚本中。当我在构建它时,它目前的作用是: param($installPath, $toolsPath, $package, $project) $content = Get-Content $project.ProjectItems.Item("Properties\Ass

我有一个nuget软件包解决方案,安装得很好。我现在需要修改目标项目的Properties\AssemblyInfo.cs文件以添加一些代码

我有一个Install.ps1脚本,所以我要将我的powershell脚本添加到此脚本中。当我在构建它时,它目前的作用是:

param($installPath, $toolsPath, $package, $project)
$content = Get-Content $project.ProjectItems.Item("Properties\AssemblyInfo.cs")
它给我的错误是:

Value does not fall within the expected range.At 
C:\git\Testing\packages\Standards.Testing.1.0.6694.30974-beta\tools\Install.ps1:2
char:1
+ $content = Get-Content $project.ProjectItems.Item("Properties\Assembl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException
其目的是加载AssemblyInfo.cs文件的内容并检查其中的某些内容,然后对其进行修改并将其写回


我不明白的是为什么它不会将该文件的内容读入变量。

问题是我错误地尝试引用AssemblyInfo.cs文件的路径。我没有意识到脚本的参数提供了我所需要的一切,其他帖子引用了一个可怕的类,它包含了所有必需的信息

因此,包含有关脚本参数的信息:

从该帖子链接的是该页面,该页面详细介绍了有关nuget安装的可用信息:

我的脚本现在如下所示:

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

#Update the AssemblyInfo.cs if it has not been updated before
function Get-Append-String {
    $text = ''
    $args[0] | ForEach-Object -Process {
        $text += $_ + "`n"
    }
    return $text
}

function Get-Append {
    $text = ''
    $args | ForEach-Object -Process {
        $text += $_
    }
    return $text
}

function Get-Contains {
    $text = Get-Append-String $args[0]
    return ($text -like $args[1])
}

$query = "*using Xunit;*"
$xunit = "using Xunit;`n"
$comment = "`n// xUnit configuraiton...`n// MaxParallelThreads limits the number of threads which xUnit will use to run tests`n[assembly: CollectionBehavior(MaxParallelThreads = 8)]`n"

$path = $project.FullName + '\..\Properties\AssemblyInfo.cs'
$content = Get-Content -Path $path
$content = Get-Append-String $content

if ( ($content -like $query) -eq $false ) {
    $content = $xunit + $content + $comment
    Set-Content -Path $path -Value $content
}