读取(最好是通过C#)package.config文件中列出的软件包的最佳方法是什么?
在我们的源代码库中,我有很多解决方案和项目,同样还有很多packages.config文件.我正在尝试在我的源代码存储库中构建一个正在使用的包(和版本)的整合列表.
我可以看到有一个NuGet.Core包可用 - 我怎么能用它来实现我的目标?
谢谢
Mat*_*ard 11
如果您不想直接读取XML,可以安装NuGet.Core NuGet包,然后使用PackageReference类.
下面是一些使用此类打印包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);
}
Run Code Online (Sandbox Code Playgroud)
您需要自己找到packages.config文件,您可以使用目录搜索来执行这些操作,例如:
foreach (string fileName in Directory.EnumerateFiles("d:\root\path", "packages.config", SearchOption.AllDirectories))
{
// Read the packages.config file...
}
Run Code Online (Sandbox Code Playgroud)
另一种更新的方法是安装NuGet.Packaging NuGet包并使用类似于以下代码:
var document = XDocument.Load (fileName);
var reader = new PackagesConfigReader (document);
foreach (PackageReference package in reader.GetPackages ())
{
Console.WriteLine (package.PackageIdentity);
}
Run Code Online (Sandbox Code Playgroud)