【问题标题】:How to get version of the installed nuget in MSBuild?如何在 MSBuild 中获取已安装 nuget 的版本?
【发布时间】:2019-10-24 19:27:07
【问题描述】:

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

有没有办法通过 MSBuild 检测特定 nuget 包正在使用的版本?

我知道一种在文件系统中搜索 DLL 并检测版本的方法,但这似乎不是一个干净的解决方案。有什么开箱即用的东西吗?

【问题讨论】:

    标签: msbuild nuget msbuild-task


    【解决方案1】:

    有一个可用于此类自定义的目标,它以前是 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
    

    【讨论】:

      猜你喜欢
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 2014-09-14
      相关资源
      最近更新 更多