安装后,请在目标程序集中阅读nuget软件包库版本

时间:2020-08-11 15:05:26

标签: visual-studio msbuild nuget msbuild-task .net-standard-2.1

如何在目标程序集中找到安装包库版本?

假设:

我们有NugetLibConsumerApp(将安装NugetLib)。

我正在使用 NugetLib 中的 .targets 文件,该文件的名称相同,安装后它将在目标计算机上运行。

内部NugetLib.targets文件:

  <Target Name="Main" AfterTargets="Build">
    <Message Text="$(NugetLibVersion)" Importance="high" />
  </Target>

当前我的NugetLibVersion值不正确,需要以某种方式进行设置。

使用$(PackageVersion)"将无济于事,因为它不会读取并提供NugetLib版本,它将提供 ConsumerApp 版本(目标程序集,始终为 1.0。 0.0 )。

如果您知道实现此目标的方法,包括设置一些特殊属性,甚至使用文本文件,也欢迎使用任何其他自己的或棘手的方法。

1 个答案:

答案 0 :(得分:1)

如果您的项目是新的sdk样式格式,则只需添加此自定义目标即可获取nuget版本:

  <Target Name="PrintPackageReferences" AfterTargets="Build">
    
    <Message Text="Dependencies:%0A  @(PackageReference->'%(Identity), Version: %(Version)', '%0A    ')" Importance="High" />

    <CreateProperty Condition="'%(PackageReference.Identity)'=='NugetLib'" Value="%(PackageReference.Version)">
     <Output TaskParameter="Value" PropertyName="NugetLibVersion" />
    </CreateProperty>

    <Message Importance="high" Text="$(NugetLibVersion)"></Message>
    
    </Target>