Nuget复制并将文件添加到解决方案级别

时间:2013-12-24 11:05:02

标签: powershell nuget init nuget-package

我想创建一个NUGET包,将几个文件添加到某个解决方案文件夹中。具体而言,软件包必须在安装时执行以下操作:

  1. 在目标项目中创建临时文件夹。
  2. 将与扩展名匹配的所有文件(例如* .txt)复制到临时文件夹。
  3. 将文件移至Solution root。
  4. 创建名为“解决方案项目”的解决方案文件夹。
  5. 添加刚刚移动到该解决方案文件夹的所有文件。
  6. 解决方案和磁盘中删除临时文件夹。
  7. 我使用package.nuspec文件创建临时目录并转储文件,然后init.ps1执行其余操作。

    不幸的是,在第1步之后没有任何事情发生。


    这是我的package.nuspec文件。

    <?xml version="1.0"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
      <metadata>
        <id>IncludeFiles</id>
        <version>1.0</version>
        <authors>Chameera</authors>
        <owners>Chameera</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>dummy include files</description>
        <tags>dummy</tags>
      </metadata>
      <files>
        <file src="source\*.txt" target="content\temp" />
      </files>
    </package>
    

    这是我的init.ps1文件。

    param($installPath, $toolsPath, $package, $project)
    
    $projectFullName = $project.FullName 
    $fileInfo = new-object -typename System.IO.FileInfo -ArgumentList $projectFullName
    $projectDirectory = $fileInfo.DirectoryName
    
    $tempDirectory = "temp"
    $sourceDirectory = "$projectDirectory\$tempDirectory"
    $destinationDirectory = (get-item $sourceDirectory).parent.FullName
    
    if(test-path $sourceDirectory -pathtype container)
    {
     robocopy $sourceDirectory $destinationDirectory /XO
    
     $tempDirectoryProjectItem = $project.ProjectItems.Item($tempDirectory)
     $tempDirectoryProjectItem.Remove()
    
     remove-item $sourceDirectory -recurse
    }
    

1 个答案:

答案 0 :(得分:-1)

当您在nuget包资源管理器中打开使用nuspec创建的软件包时,您是否在content \ temp文件夹中看到了任何.txt文件?

当调用nuget.exe包时,它会将.txt文件从source \文件夹复制到content \ temp,同时制作包本身。

有关详细信息,请参阅http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package