在类库(.NET标准)项目上添加install.ps1

时间:2017-08-15 13:10:00

标签: powershell nuget visual-studio-2017

我已将.NET Framework项目迁移到.NET Standard项目。

在.NET Framework项目中,我有一个带有附加文件配置的.nuspec文件,并使用" NuGet.exe pack"

创建nuget包
  <files>
     <file src="Install.ps1" target="tools\Install.ps1" />
  </files

在.NET Standard项目中,我不再使用nuspec文件并切换到&#34; msbuild -t:Pack&#34;创建nuget包。我已经尝试将install.ps1设置为(BuildAction = Content),但后来我在日志中看到一个警告&#34;问题:PowerShell文件输出侧工具文件夹。&#34;在nupkg文件中,目录是&#34; content \ tools \ Install.ps1&#34;我需要&#34; tools \ Install.ps1&#34;。

2 个答案:

答案 0 :(得分:1)

要将文件放入包中的其他路径,您可以使用<PackagePath>元素中的<Content>元素,如下所示:

<ItemGroup>
    <Content Include="install.ps1">
        <PackagePath>tools\</PackagePath>
  </Content>
</ItemGroup>

(提供install.ps1位于项目的根目录中,否则您将不得不调整Include属性值)

有关详细信息,请在此处查看有关pack MsBuild目标的文档:

https://github.com/NuGet/Home/wiki/Adding-nuget-pack-as-a-msbuild-target

答案 1 :(得分:0)

  

我已尝试将install.ps1设置为(BuildAction = Content),但后来我在日志“问题:PowerShell文件外侧工具文件夹”中看到警告。在nupkg文件中,目录是“content \ tools \ Install.ps1”,我需要“tools \ Install.ps1”

当您使用msbuild -t:Pack创建nuget包时,msbuild / VS希望文件位于内容文件夹中。但是如果你仍然想要tools目录中的install.ps1文件,你仍然可以使用.nuspec文件和nuget.exe打包。

打包包的详细步骤:

按以下设置创建.nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>TestInstall.ps1</id>
    <version>1.0.0</version>
    <authors>Test</authors>
    <owners>Test</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2017</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>

  <files>
    <file src="Install.ps1" target="tools" />
    <file src="bin\Debug\netstandard1.4\TestInstall.ps1.dll" target="lib\netstandard1.4" />
  </files>

</package>

然后使用命令行:nuget.exe pack xxx.nuspec打包包,您将在tools目录中获得包含Install.ps1的包:

enter image description here