我必须显示特定于用户版本的错误消息(哪些功能根据当前安装的nuget版本不起作用)。
是否可以通过MSBuild检测特定nuget软件包使用的版本?
我知道一种在DLL的文件系统中搜索并检测版本的方法,但这似乎不是干净的解决方案。开箱即用吗?
答案 0 :(得分: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