0

我有一个带有目标文件的 NuGet 包,它根据当前上下文操作 PackageVersion(当分支是 master 时,它会创建一个预览)。

这在普通项目上运行良好,但是当我在多目标项目中使用它时它不起作用。

我该如何纠正?

我附上了一个示例项目。https://1drv.ms/u/s!At1IZ7t_aXW-iNRchOhliGP8dunGHg?e=11dW4F 重现问题:

  1. 解压所有文件
  2. 你需要一个本地 NuGet 源
  3. 在 BuildConfig/publish.bat 中输入本地 NuGet 源的名称
  4. 在 BuildConfig 中调用 publish.bat
  5. 在消费者中运行“dotnet pack”

这将创建一个版本为 1.0.0 的消费者包。这应该是 1.0.0-xdev。

当您更改 Consumer.csproj 以便使用 TargetFramework 时,会创建正确的版本

我已尝试在目标之外进行版本修改,但这会导致在 Directory.Build.Targets 文件中指定版本号时出现问题

我尝试了不同的 BeforeTargets,但没有任何效果。

4

1 回答 1

1

您使用multi-targetframeworks等属性 时<TargetFrameworks>net461</TargetFrameworks>buildnuget 包的文件夹无法正常工作,并且它不能为多目标框架服务,仅适用于单目标框架。

相反,你应该放弃build并使用buildCrossTargeting

project下BuildConfig,如果是新建的sdk项目,请使用这个

<ItemGroup>
<None Include="BuildConfig.targets" Pack="true" PackagePath="buildCrossTargeting" />"
</ItemGroup>

如果你使用nuspec文件,你应该在文件下使用这个:

<file src="BuildConfig.targets" target="buildCrossTargeting/" />

您应该注意xxx.targets文件应该直接在buildCrossTargeting文件夹下,没有任何子文件夹,否则将无法正常工作。

于 2021-01-15T02:31:18.660 回答