如何通过代码解析 NuGet 存储库路径?
How do I resolve the NuGet repository path via code?
我正在编写一个 NuGet 包,它需要执行存储在包本身中的 .exe。
我不想使用内容(无论如何内容和脚本都会消失)
所以我希望能够找到存放我的包裹的路径。既然包文件夹可以由用户更改并且 nuget.config 可以存储在多个级别,我该如何可靠地做到这一点?
这里提到:
http://blog.nuget.org/20150729/Introducing-nuget-uwp.html
..“只需从 .nuget 路径中找到它...”
但是必须有一个实用程序可以做到这一点,对吗?也许 Nuget 库之一可以为我解析路径?
没有public api(至少适当支持)去做。但是您可以使用 myget 提要中的 NuGet.Configuration - https://www.myget.org/gallery/nugetbuild
使用此 API 创建一个设置对象 -
var settings = Settings.LoadDefaultSettings(rootFolder, null, null);
见
https://github.com/NuGet/NuGet3/blob/dev/src/NuGet.Configuration/Settings/Settings.cs#L114
您可能需要调整输入以使其正确,我没有在单元测试中尝试过。
然后获取全局包文件夹
var path = SettingsUtility.GetGlobalPackagesFolder(settings)
请注意,这些软件包不是稳定的形式,我希望至少在解决此错误之后会有所改变 - https://github.com/NuGet/Home/issues/1098
编辑 -
您现在可以直接从 nuget.org
获取包裹
我正在编写一个 NuGet 包,它需要执行存储在包本身中的 .exe。
我不想使用内容(无论如何内容和脚本都会消失)
所以我希望能够找到存放我的包裹的路径。既然包文件夹可以由用户更改并且 nuget.config 可以存储在多个级别,我该如何可靠地做到这一点?
这里提到: http://blog.nuget.org/20150729/Introducing-nuget-uwp.html ..“只需从 .nuget 路径中找到它...”
但是必须有一个实用程序可以做到这一点,对吗?也许 Nuget 库之一可以为我解析路径?
没有public api(至少适当支持)去做。但是您可以使用 myget 提要中的 NuGet.Configuration - https://www.myget.org/gallery/nugetbuild
使用此 API 创建一个设置对象 -
var settings = Settings.LoadDefaultSettings(rootFolder, null, null);
见 https://github.com/NuGet/NuGet3/blob/dev/src/NuGet.Configuration/Settings/Settings.cs#L114
您可能需要调整输入以使其正确,我没有在单元测试中尝试过。
然后获取全局包文件夹
var path = SettingsUtility.GetGlobalPackagesFolder(settings)
请注意,这些软件包不是稳定的形式,我希望至少在解决此错误之后会有所改变 - https://github.com/NuGet/Home/issues/1098
编辑 -
您现在可以直接从 nuget.org
获取包裹