使用dotnet pack将变量传递给nuspec

时间:2018-11-26 16:32:02

标签: tfsbuild nuspec dotnet-core-pack

使用dotnet pack时,如何将变量传递给nuspec文件?

我正在尝试通过版本。这是nuspec:

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <!-- Required elements-->
        <id>1</id>
        <version>$PackageVersion$</version>
        <description>1</description>
        <authors>1</authors>
    </metadata>
</package>

这是我的命令:

  

dotnet.exe包/p:NuspecFile=./App.Nuspec   /p:PackageVersion=9.7.28170

我得到了错误: 值不能为null或空字符串。

有趣的是,如果我将变量更改为描述:

<version>1.1.0</version>
<description>$PackageVersion$</description>

我收到错误消息:需要描述。

标记为说明时,标记名称在错误消息中。但是,当标记为版本时,错误消息中将没有标记名称-仅术语值。这两个都是必填字段。

我正在使用本地计算机上的命令行执行此操作,但是TFS构建会给出相同的错误。这是该步骤的其他构建属性的TFS工具提示。 指定由分号分隔的令牌=值对的列表,其中在.nuspec文件中每次出现的$ token $都将替换为给定值。值可以是带引号的字符串。

听起来我正在遵守这些规则。这是TFS生成的:

  

“ C:\ Program Files \ dotnet \ dotnet.exe”包   D:\ Agent_work \ 5 \ s \ MyProject \ MyProject.csproj-输出   D:\ Agent_work \ 5 \ a /p:NuspecFile=App.nuspec   /p:PackageVersion=9.7.28170 --verbosity正常

与我的命令相同。

我在做什么错了?

2 个答案:

答案 0 :(得分:0)

csproj文件用作直通。变量需要如下设置:

<NuspecFile>App.nuspec</NuspecFile>
<NuspecProperties>version=$(PackageVersion)</NuspecProperties>

命令是:

  

dotnet.exe包/p:PackageVersion=9.7.28170

这将使用proj文件中的Nuspec文件,并将PackageVersion变量传递到.nuspec文件的版本标记。

答案 1 :(得分:0)

假设您的nuget规范文件类似于以下check.nuspec

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>abc1234</id>
     <version>1.0.0</version>
    <title>FutureGroup/title>
    <authors>FutureGroup</authors>
  </metadata>
</package>

现在使用 dotnet pack CLI,您要使用名称为 FutureGroup.2.0.0-Dev

的nuspec文件生成一个nupkg软件包。

在csproj文件的下面添加一行,以便将参数从dotnet cli通过csproj传递到nuspec文件。

<IsPackable>true</IsPackable> 
   <NuspecFile>check.nuspec</NuspecFile>
<NuspecProperties>version=$(PackageVersion)</NuspecProperties>

dotnet cli

dotnet pack  .\sample.csproj  -p:NuspecFile=.\nuget\check.nuspec  -p:NuspecBasePath=.\temp /p:Outputpath=package /p:PackageVersion=2.0.0-Dev