如何在MSBuild中获取已安装nuget的版本?

如何在MSBuild中获取已安装nuget的版本?,msbuild,nuget,msbuild-task,Msbuild,Nuget,Msbuild Task,我必须显示特定于用户版本的错误消息(根据当前安装的nuget版本,哪些功能不起作用) 是否有方法通过MSBuild检测特定nuget包的使用版本 我知道一种在文件系统中搜索DLL并检测版本的方法,但这似乎不是一个干净的解决方案。是否有现成的功能?有一个可用于此类定制的目标,它以前是内置1.*的一部分,但出于兼容性考虑仍然存在:ResolvePackageDependencies 您可以在msbuild中使用它,如下所示: <Project Sdk="Microsoft.NET.Sdk"&g

我必须显示特定于用户版本的错误消息(根据当前安装的nuget版本,哪些功能不起作用)

是否有方法通过MSBuild检测特定nuget包的使用版本


我知道一种在文件系统中搜索DLL并检测版本的方法,但这似乎不是一个干净的解决方案。是否有现成的功能?

有一个可用于此类定制的目标,它以前是内置1.*的一部分,但出于兼容性考虑仍然存在:
ResolvePackageDependencies

您可以在msbuild中使用它,如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="12.*" />
    <PackageReference Include="DasMulli.Win32.ServiceUtils" Version="*" />
  </ItemGroup>

  <Target Name="PrintPackageReferences" DependsOnTargets="RunResolvePackageDependencies">
    <Message Text="Dependencies:%0A    @(PackageDefinitions->'%(Name), Version: %(Version)', '%0A    ')" Importance="High" />
  </Target>

</Project>
  > dotnet msbuild -restore -t:PrintPackageReferences -nologo

  Restore completed in 14.56 ms for C:\demos\testcons\testcons.csproj.
  Dependencies:
      DasMulli.Win32.ServiceUtils, Version: 1.2.0
      Newtonsoft.Json, Version: 12.0.2