如何使用PowerShell将license文件添加到自定义NuGet包中



我正面临着一个问题与PowerShell和NuGet。我已经创建了一个自定义包,其中还包含lib目录下的许可证文件。如果我使用以下代码尝试添加一个相对文件,那么它将被添加为链接(install.ps1):

param($installPath, $toolsPath, $package, $project)
function PathToUri([string] $path)
{
    return new-object Uri('file://' + $path.Replace("%","%25").Replace("#","%23").Replace("$","%24").Replace("+","%2B").Replace(",","%2C").Replace("=","%3D").Replace("@","%40").Replace("~","%7E").Replace("^","%5E"))
}
function UriToPath([System.Uri] $uri)
{
    return [System.Uri]::UnescapeDataString( $uri.ToString() ).Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar)
}
$licensePath = PathToUri( "$installPathlibAspose.Pdf.lic" )
Write-Host "Lice $licensePath"
$projectPath = PathToUri( $project.FullName )
Write-Host "Proj $projectPath"
$relativePath = UriToPath( $projectPath.MakeRelativeUri($licensePath) )
Write-Host "Rele $relativePath"
$project.ProjectItems.AddFromFile($relativePath)

我得到一个错误,没有找到一个文件,尽管正确的相对翻译。

Lice file:///T:/ConsoleApplication2/packages/Aspose.PDF.7.4.0/lib/Aspose.Pdf.lic
Proj file:///T:/ConsoleApplication2/ConsoleApplication2/ConsoleApplication2.csproj
Rele ..packagesAspose.PDF.7.4.0libAspose.Pdf.lic
Exception calling "AddFromFile" with "1" argument(s): "Cannot add the link because the source file '..packagesAspose.PDF.7.4.0libAspose.Pdf.lic' cannot be found."
At T:ConsoleApplication2packagesAspose.PDF.7.4.0toolsInstall.ps1:20 char:1
+ $project.ProjectItems.AddFromFile($relativePath)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

如果我使用原始的,非相对路径,我得到一个重复的文件错误。

我开始尝试不同的方法,并最终取得了成功:

param($installPath, $toolsPath, $package, $project)
pushd $project.Properties.Item("FullPath").Value
$project.ProjectItems.AddFromFile( "$installPathlibAspose.Pdf.lic" )
$project.ProjectItems.Item("Aspose.Pdf.Lic").Properties.Item("CopyToOutputDirectory").Value = 2
popd

欢呼。

最新更新