我试图找出通过MSBuild /t:Pack
生成Nuget软件包的正确用法,该软件包将使用包含美元代币的nuspec文件。
我所做的是:
<NuspecFile>
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>
之后,似乎已被“修复”,但这并不是一个好方法