带有.nuspec文件的MSBuild / t:Pack-是否支持令牌替换?

时间:2019-01-25 15:21:57

标签: msbuild nuget nuget-package nuspec

我试图找出通过MSBuild /t:Pack生成Nuget软件包的正确用法,该软件包将使用包含美元代币的nuspec文件。

我所做的是:

  • 我在csproj文件中定义了<NuspecFile>
  • 我提供了基本的nuspec文件
  • 我尝试执行msbuild /t:Pack /p:Configuration=Release

它工作正常,并成功应用了nuspec文件中提供的数据。现在,当我用

更新nuspec时
<version>$version$</version>

我得到以下

C:\Program Files\dotnet\sdk\2.2.103\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(202,5): error : An error occured while trying to parse the value '' of property 'version' in the manifest file. [C:\Users\patryk\source\repos\NuspecTokenReplacement\NuspecTokenReplacement\NuspecTokenReplacement.csproj]
C:\Program Files\dotnet\sdk\2.2.103\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(202,5): error : Value cannot be null or an empty string. [C:\Users\patryk\source\repos\NuspecTokenReplacement\NuspecTokenReplacement\NuspecTokenReplacement.csproj]
C:\Program Files\dotnet\sdk\2.2.103\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(202,5): error : Parameter name: value [C:\Users\patryk\source\repos\NuspecTokenReplacement\NuspecTokenReplacement\NuspecTokenReplacement.csproj]

以下回购中提供了更改:https://github.com/patrykbuzowicz/dotnet-msbuild-pack-nuspectokenreplacement

我的问题是:甚至可以通过msbuild方法在.nuspec文件中使用令牌吗?

我知道一种替代方法是删除.nuspec文件并在.csproj文件中定义元数据。这个问题集中在nuspec方法上。

另一个问题:msbuild /t:Pack是否适用于旧式.csproj文件,即<Project Sdk="Microsoft.NET.Sdk">之前的文件?在如此旧的.csproj上执行Invalid target framework for the file ...时,出现msbuild /t:Pack错误。 在我手动向其中添加<TargetFramework>(尽管有<TargetFrameworkVersion>之后,似乎已被“修复”,但这并不是一个好方法

0 个答案:

没有答案