В соответствии с обсуждением этого вопроса , MSBuildWorkspace
не имеет никакой возможности получить ссылки NuGet на проект. Однако вы можете проанализировать файл .csproj, если вы используете проект sdk format или packages.config в противном случае.
Для проекта sdk вы можете использовать следующий код:
void NugetPackages(Microsoft.CodeAnalysis.Project project)
{
var csproj = new XmlDocument();
csproj.Load(project.FilePath);
var nodes = csproj.SelectNodes("//PackageReference[@Include and @Version]");
foreach (XmlNode packageReference in nodes)
{
var packageName = packageReference.Attributes["Include"].Value;
var packageVersion = Version.Parse(packageReference.Attributes["Version"].Value);
// handle package
}
}
Для старого формата .csproj выможет использовать следующий код:
void NugetPackages(Microsoft.CodeAnalysis.Project project)
{
var directory = Path.GetDirectoryName(project.FilePath);
var packagesConfigPath = Path.Combine(directory, "packages.config");
var packagesConfig = new XmlDocument();
packagesConfig.Load(packagesConfigPath);
var nodes = packagesConfig.SelectNodes("//package[@id and @version]");
foreach (XmlNode packageReference in nodes)
{
var packageName = packageReference.Attributes["id"].Value;
var packageVersion = Version.Parse(packageReference.Attributes["version"].Value);
// handle package
}
}