如何阅读包中的NuGet包列表.配置编程
本文关键字:列表 配置 编程 包列表 何阅读 包中 NuGet | 更新日期: 2023-09-27 18:16:58
阅读包中列出的包的最佳方法是什么(最好是通过c#) ?配置文件?
在我们的源代码库中,我有很多解决方案和项目,同样也有很多包。配置文件。我正试图在我的源代码存储库中构建一个正在使用的软件包(和版本)的统一列表。
我可以看到有一个NuGet。可用的核心软件包-我如何使用它来实现我的目标?
谢谢
如果您不想直接读取XML,您可以安装NuGet。Core NuGet包,然后使用packagerreference类。
下面是一些示例代码,使用这个类打印出包的id和版本。
string fileName = @"c:'full'path'to'packages.config";
var file = new PackageReferenceFile(fileName);
foreach (PackageReference packageReference in file.GetPackageReferences())
{
Console.WriteLine("Id={0}, Version={1}", packageReference.Id, packageReference.Version);
}
你需要找到这些包。你可以用目录搜索来做,比如:
foreach (string fileName in Directory.EnumerateFiles("d:'root'path", "packages.config", SearchOption.AllDirectories))
{
// Read the packages.config file...
}
另一种更新的方法是安装NuGet。打包NuGet包,并使用类似的代码:
var document = XDocument.Load (fileName);
var reader = new PackagesConfigReader (document);
foreach (PackageReference package in reader.GetPackages ())
{
Console.WriteLine (package.PackageIdentity);
}
根据建议,您需要安装NuGet。核心,您的解决方案可能包含多个项目,因此在安装时知道如何指定项目名称是很好的。假设你的解决方案是MySolution,你有两个项目Project01 &Project02,你只想安装在Project02。
Install-Package NuGet.Core -ProjectName Project02
接下来,你需要在whatever.cs
页面中添加一个using语句,你要做你的工作来定位包,假设你只想得到版本号,这样你就可以在你网站的某个地方打印出来。这正是我想做的。
using NuGet;
接下来,我想获得一个特定的软件包并读取它的版本号,这样当我们发布我的软件时,我可以在我的网站上的某个地方看到一个视觉标识符,我可以去看看正在生产的版本。
这是我写的代码,在我的页面上填充一个webforms标签。
protected void Page_Load(Object sender, EventArgs e)
{
var pkgRefpath = Server.MapPath("~/packages.config");
PackageReferenceFile nugetPkgConfig = new PackageReferenceFile(pkgRefpath);
IEnumerable<PackageReference> allPackages = nugetPkgConfig.GetPackageReferences();
var newtonsoftPkg = (
from pkg in allPackages
where pkg.Id == "Newtonsoft.Json"
select pkg
).FirstOrDefault();
if (newtonsoftPkg== null) return;
var newtonsoftPkg_Version = newtonsoftPkg.Version;
ltrNewtonsoftVer.Text = newtonsoftPkg_Version.ToString();
}
这是一个稍微不同的问题的答案,但这显示了我找到这个问题/答案并修改我学到的东西以满足我自己的需求后,我最终得到的解决方案。我希望它能帮助别人。