使用NuGet.exe安装/更新没有项目文件的仅内容包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NuGet.exe安装/更新没有项目文件的仅内容包相关的知识,希望对你有一定的参考价值。

我们有一个本地NuGet提要,其中包含一些仅限JS内容的包。 我想在一个普通的JS应用程序中安装这些软件包(我在Brackets中编辑,我根本不使用VS)。显然像Bower这样的东西会更合适,但我不想维护两个包裹饲料系统。

如果我执行nuget install MyPackage,它会下载并解压缩包,但不会将内容文件复制到子文件夹(实际上它会下载当前文件夹中的包)。

我可以使用nuget.exe实际复制内容,还是必须是外部步骤?

答案

好的,这是我为命令行更新做的一些初步工作(如果你手动修改packages.config,它也适用于安装)。

它有以下限制:

  1. 它希望您将包保存在nuget_packages文件夹中(类似于node_modules)。
  2. 您需要在该文件夹中有一个packages.config文件。
  3. 仅复制内容文件夹的内容,不运行任何安装等。
  4. 如果您有一个与内容文件/文件夹同名的现有文件/文件夹,它将被覆盖。

码:

Set-StrictMode -Version 2
$ErrorActionPreference = 'Stop'

$packagesDirectory = (Get-Item nuget_packages)

$packagesDirectory.GetDirectories() | % {
    Write-Host "Deleting $_"
    Remove-Item $_.FullName -Recurse
}
Write-Host "Starting nuget.exe"
Start-Process nuget -ArgumentList "install packages.config" -WorkingDirectory nuget_packages -NoNewWindow -Wait

$packagesDirectory.GetDirectories() | % {
    $contentPath = Join-Path (Join-Path $packagesDirectory.Name $_) 'content'
    if (!(Test-Path $contentPath)) {
        return;
    }

    Get-ChildItem $contentPath -Exclude *.transform | % {
        $target = $_.Name
        if (Test-Path $target) {
            Write-Host "Deleting $target"
            Remove-Item $target -Recurse
        }

        Write-Host "Copying $(Join-Path $contentPath $_.Name) to $target"
        Copy-Item $_.FullName -Destination $target -Recurse
    }
}
另一答案

我使用标签<contentFiles>和flatten =“true”在根目录下载包文件。我的nuget包中包含Typescript文件。

 <contentFiles>
        <files include="cm-common/**/*" buildAction="None" flatten="true" />
</contentFiles>

我最初使用的是<files>标签,这会在位置root / package.name / content / {files}中提取文件

这可能对某人有帮助

以上是关于使用NuGet.exe安装/更新没有项目文件的仅内容包的主要内容,如果未能解决你的问题,请参考以下文章

nuget服务器搭建,以及如何发布一个Nuget包

nuget 包中 exe 文件的位置和 nuspec 中匹配的文件标记

如何下载没有 nuget.exe 或 Visual Studio 扩展的 Nuget 包?

Nuget 4在哪里安装

如何在没有nuget.exe或Visual Studio扩展的情况下下载Nuget包?

git不识别exe文件