获取NuGet包的位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取NuGet包的位置相关的知识,希望对你有一定的参考价值。
在我的公司,我们有一些自制工具,在构建其他项目时用于构建过程。我需要在VS2017 BeforeBuild和AfterBuild脚本中使用这些工具,它也必须在MS Build中工作。
这些工具作为NuGet包分发,我们的大多数项目都移植到PackageReference而不是Packages.config
我知道MyTool(版本XYZ)的当前安装位于C: Users Me .nuget packages MyTool XYZ,但是如何在我的项目文件中引用它,所以当下一个版本是释放?
我认为C: Users Me .nuget packages可以替换为$(NuGetPackageRoot),但是如何始终引用项目中安装的版本?
一些Nuget包似乎将贡献放在obj文件夹中的MyProject.csproj.nuget.g.props和MyProject.csproj.nuget.g.targets中,但是我找不到关于这些文件的有用信息。
答案
在目标内部,您可以使用它来创建基于项目的属性:
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
</ItemGroup>
<Target Name="PrintStuff" AfterTargets="AfterBuild">
<PropertyGroup>
<NewtonsoftJsonVersion Condition="'%(PackageReference.Identity)' == 'Newtonsoft.Json'">%(PackageReference.Version)</NewtonsoftJsonVersion>
<NewtonsoftJsonPath>$(NuGetPackageRoot)newtonsoft.json$(NewtonsoftJsonVersion)</NewtonsoftJsonPath>
</PropertyGroup>
<Message Importance="high" Text="JSON.NET version: $(NewtonsoftJsonVersion)" />
<Message Importance="high" Text="JSON.NET path: $(NewtonsoftJsonPath)" />
<Exec Command="ls" WorkingDirectory="$(NewtonsoftJsonPath)" Condition="'$(OS)' != 'Windows_NT'" />
<Exec Command="dir" WorkingDirectory="$(NewtonsoftJsonPath)" Condition="'$(OS)' == 'Windows_NT'" />
</Target>
以上是关于获取NuGet包的位置的主要内容,如果未能解决你的问题,请参考以下文章