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

Msbuild 通过PackageReference使用包含.targets文件的nuget包,msbuild,nuget,Msbuild,Nuget,我有.NET452项目-让我们调用它Consumer.csproj,我想使用nuget。让我们调用它SharedTargets,它包含一些来自msbuild的自定义目标文件(SharedTargets.targets) 我正在使用PackageReference格式,现在(与以前相比)nuget软件包正在还原到共享文件夹(%userprofile%.nuget\packages),我不确定通过它引用它是否是个好主意(感觉不对) 例如: 1 此外,这仅适用于VS,从命令行(msbuild)运行

我有.NET452项目-让我们调用它
Consumer.csproj
,我想使用nuget。让我们调用它
SharedTargets
,它包含一些来自msbuild的自定义目标文件(
SharedTargets.targets

我正在使用
PackageReference
格式,现在(与以前相比)nuget软件包正在还原到共享文件夹(%userprofile%.nuget\packages),我不确定通过它引用它是否是个好主意(感觉不对)

例如:


1
此外,这仅适用于VS,从命令行(
msbuild
)运行此命令时,我遇到了鸡蛋问题:

确认
声明中的路径正确,并且 该文件存在于磁盘上

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

因此,问题:

  • 有没有更优雅的方法来解析项目文件中nuget包的路径
  • 是否有方法使msbuild成功(即在导入
    SharedTargets.target
    之前还原包)

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

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

谢谢,这很管用:)如果你在忙,我有一个后续问题,如何正确地引用这些目标文件中的.cs文件-ref:
<PackageReference Include="SharedTargets">
  <Version>1.0</Version>
</PackageReference>
<Import 
  Project="$(USERPROFILE)\.nuget\packages\SharedTargets\1.0\SharedTargets.targets"
/>