使用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正常
与我的命令相同。
我在做什么错了?
答案 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