gpt4 book ai didi

msbuild - 通过 PackageReference 使用包含 .targets 文件的 nuget 包

转载 作者:行者123 更新时间:2023-12-02 03:19:12 25 4
gpt4 key购买 nike

我有 .NET452 项目 - 让我们称之为 Consumer.csproj我想使用 nuget 让我们称之为 SharedTargets其中包含来自 msbuild 的一些自定义目标文件 ( SharedTargets.targets)。

我正在使用 PackageReference格式,现在(与过去相比)nuget 包正在恢复到共享文件夹 (%userprofile%.nuget\packages),我不确定通过它引用它是否是个好主意(不是感觉不错)。

例如:

<PackageReference Include="SharedTargets">
<Version>1.0</Version>
</PackageReference>
<Import
Project="$(USERPROFILE)\.nuget\packages\SharedTargets\1.0\SharedTargets.targets"
/>

此外,这仅在 VS 中有效,从命令行运行它 (msbuild) 我遇到了先有鸡还是先有蛋的问题:

Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

显然,因为我需要先恢复 nuget,然后才能使用它:)

所以问题:

  • 有没有更优雅的方法来解析项目文件中 nuget 包的路径
  • 有没有办法让 msbuild 成功(即在导入 SharedTargets.target 之前恢复包)

最佳答案

您不应尝试手动导入通过 NuGet 分发的目标。

将您的 .targets 文件放入包内的 build 子文件夹中,并将其命名为 SharedTargets.targets (package id + .targets) 和NuGet 将自动包含目标 - 对于 packages.config 项目,它将在安装时修改项目文件,对于 PackageReference 项目,将通过修改 obj\ 目录中隐式生成的目标文件来导入目标。

关于msbuild - 通过 PackageReference 使用包含 .targets 文件的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55279468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com