c# - 如何以编程方式获取解决方案中使用的 NuGet 包的版本?

标签 c# .net nuget

我正在处理一个项目,我们需要知道我们正在使用的 NuGet 包的版本,并在代码中使用它。

我尝试的一种方法是从 packages.config 文件中读取,为我想要的包解析它,并为版本解析行。像这样的东西:

var lines = System.IO.File.ReadAllLines(@"..\..\packages.config");
foreach(var line in lines)
{
    if (line.Contains("My.Package"))
    {
         foreach(var part in line.split(' '))
         {
             if (part.Contains("version"))
             {
                 return part.Split('"')[1];
             }
         }
    }
}

有没有更好的方法以编程方式执行此操作?

注意:上面的代码将不起作用,因为 packages.config 没有随应用程序一起部署。

最佳答案

如果包有任何类,您可以只从该类获取程序集,然后获取版本。但是,如果包没有类,例如做一些像使用 nuget.targets 复制文件这样的事情是不可能的。

Console.WriteLine("Using Selenium.WebDriver: " + Assembly.GetAssembly(typeof(OpenQA.Selenium.By)).GetName().Version.ToString());

关于c# - 如何以编程方式获取解决方案中使用的 NuGet 包的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775712/

相关文章:

c# - 访问 .aspx 文件中的属性设置值

c# - 强制浏览器在更新后重新加载 Silverlight xap

c# - 在任务中捕获异常的最佳方法是什么?

nuget - 发布定义以发布多个 Artifact 的 nuget 包

visual-studio-2015 - 如何从 Visual Studio 中的解决方案中卸载*所有* nuget 包

c# - 这个 "No object for moniker"是什么消息?

c# - 抽象类的具体使用

.net - Double Convert.ToDecimal 控制小数位数

.net - F#记录与.net结构

c# - 如何使用 Asp.net 5 (dnu pack) 指定 Nuget 包 ID