我知道自从 msbuild 15(与 2017 年相比)发布以来,NuGet 现在已完全集成到 MSBuild 中。
我有一个 nuspec 文件,其中定义了包属性的变量,例如:
<metadata>
<id>$id$</id>
<version>$version$</version>
<authors>$authors$</authors>
...
</metadata>
nuspec 文件位于项目的同一文件夹中。
使用 nuget 工具创建包时,它工作正常。
nuget pack
使用 msbuild v15 时,它会引发异常。
运行命令:
msbuild -version
Microsoft (R) Build Engine 版本 15.8.168+ga8fba1ebd7 用于 .NET Framework 15.8.168.64424
msbuild /t:pack /p:configuration=release /p:NuspecFile=mylib.nuspec
引发异常:
C:\Program Files\dotnet\sdk\2.1.402\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(199,5):错误:值不能为空或为空细绳。
奇怪的是 dotnet sdk 版本 2.1.402 引发了异常。
我尝试使用 vs2017 安装 msbuild 及其路径,它也引发了相同的异常。
当我用它的值替换变量时,msbuild 工作正常。
问题
这是 msbuild 版本 15.8.168.64424 中的错误还是我错过了什么?
换句话说,msbuild 是否支持使用包的元数据变量?