Visual Studio中NuGet根路径对应的$(Variable)变量查询
问题描述
使用第三方NuGet包时,需要将包中包含的内容文件复制到项目输出目录。操作后项目自动生成了以下硬编码绝对路径的配置:
<Content Update="C:\Users\djdoe\.nuget\packages\thirdpartynuget\1.0.2\contentFiles\any\net472\thefile.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content>
尝试用%userprofile%\.nuget替换绝对路径后,文件无法正常复制,询问是否可以使用Visual Studio可识别的$开头变量来配置该路径。
编辑补充:已找到两个可指向NuGet文件夹的有效变量:$(NuGetPackageFolders)和$(NuGetPackageRoot),二者均可用。
解决方案
可以使用Visual Studio/MSBuild内置的$(NuGetPackageRoot)或$(NuGetPackageFolders)变量替代硬编码路径,配置示例如下:
使用$(NuGetPackageRoot)的配置:
<Content Update="$(NuGetPackageRoot)thirdpartynuget\1.0.2\contentFiles\any\net472\thefile.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content>
使用$(NuGetPackageFolders)的配置:
<Content Update="$(NuGetPackageFolders)thirdpartynuget\1.0.2\contentFiles\any\net472\thefile.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content>
这两个变量会自动指向NuGet包的存储目录,无需硬编码用户路径,能避免不同环境下的路径兼容性问题。
内容的提问来源于stack exchange,提问作者Dee J. Doena
相关产品推荐
相关产品推荐

