安装时读取目标程序集中的 nuget 包库版本
Read a nuget package library version in the target assembly when installed
如何在目标程序集中查找安装包库版本?
假设:
我们有 NugetLib
和 ConsumerApp
(这将安装 NugetLib)。
我在 .targets 文件中使用 NugetLib 命名相同的文件,安装后它会 运行 在目标上.
在 NugetLib.targets 文件中:
<Target Name="Main" AfterTargets="Build">
<Message Text="$(NugetLibVersion)" Importance="high" />
</Target>
目前我没有 NugetLibVersion
的正确值,需要以某种方式设置它。
使用 $(PackageVersion)"
没有帮助,因为它不读取和提供 NugetLib 版本,它将提供 ConsumerApp 版本(目标程序集,它将始终是1.0.0.0).
如果您知道实现此目的的方法,包括设置一些特殊属性,甚至通过使用文本文件,或任何其他自己的或棘手的方法,我们都欢迎和赞赏。
如果您的项目是新的 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>
如何在目标程序集中查找安装包库版本?
假设:
我们有 NugetLib
和 ConsumerApp
(这将安装 NugetLib)。
我在 .targets 文件中使用 NugetLib 命名相同的文件,安装后它会 运行 在目标上.
在 NugetLib.targets 文件中:
<Target Name="Main" AfterTargets="Build">
<Message Text="$(NugetLibVersion)" Importance="high" />
</Target>
目前我没有 NugetLibVersion
的正确值,需要以某种方式设置它。
使用 $(PackageVersion)"
没有帮助,因为它不读取和提供 NugetLib 版本,它将提供 ConsumerApp 版本(目标程序集,它将始终是1.0.0.0).
如果您知道实现此目的的方法,包括设置一些特殊属性,甚至通过使用文本文件,或任何其他自己的或棘手的方法,我们都欢迎和赞赏。
如果您的项目是新的 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>