MSBuild宏用于NuGet包目录

15

我正在开发一个NuGet包,通过使用 .targets 文件,将一步添加到构建过程中。

为了成功完成构建,我需要引用NuGet包中的其他文件。

过去,我使用了 $(SolutionDir)packages\MyPackage,一切都正常运行。

但是,我刚刚在尝试 VS 2017 RC时,发现我的包被安装在全局NuGet包目录中,而不是解决方案文件夹中。

是否有一些来自MSBuild的宏,其中包含NuGet packages文件夹的路径? 我必须保持与VS2012的兼容性。

2个回答

35
$(NuGetPackageRoot) 宏指向包根目录。

在Visual Studio 2019中,这不会显示在“宏<<”对话框列表中。 - Andrew Robinson
@AndrewRobinson 许多宏不在那个列表中。 - yoel halb

1
您可以使用另一种方法,在\Solutions\文件夹的根目录下创建一个NuGet.Config文件,来设置VS 2017 RC的包存储路径。请在NuGet.Config中添加以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>  
  <config>
    <add key="repositoryPath" value="$\..\Packages" />
  </config>
</configuration>

对于repositoryPath设置,您可以使用$符号指定绝对路径或相对路径(推荐)。$符号基于NuGet.Config的位置。在这种情况下,您的包将安装在$(SolutionDir)packages\文件夹中,您可以在Visual Studio 2017 RC中使用$(SolutionDir)packages\MyPackage。它也与VS2012保持兼容性。


我猜这是针对旧式项目引用的,其中 packages 目录位于解决方案文件夹中,而不是针对新式项目引用,其中 packages 目录位于 %userprofile%.nuget\packages 中。 - ChrisW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接