Как получить версию установленного nuget в MSBuild? - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно показать сообщение об ошибке для конкретной версии пользователя (какие функции не будут работать в зависимости от установленной в настоящее время версии nuget).

Есть ли способ определить, какая версия используется в конкретном пакете nuget, с помощьюMSBuild?

Я знаю способ поиска в файловой системе DLL и определения версии, но это не кажется чистым решением. Из коробки что-то есть?

1 Ответ

1 голос
/ 25 октября 2019

Существует цель, которую можно использовать для подобных настроек, которая ранее была частью сборки в 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
...