我正在做一个项目,我们需要知道我们正在使用的Nuget软件包的版本,并在代码中使用它。
我尝试的一种方法是从packages.config文件中读取信息,将其解析为所需的Package,然后解析该行以获取该版本。就像是:
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];
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法以编程方式执行此操作?
编辑:上面的代码将不起作用,因为packages.config未随应用程序一起部署。
las*_*ink 13
如果包有任何类,您只需从该类获取程序集,然后获取版本。但是,如果包没有类,例如使用 nuget.targets 复制文件之类的操作,那么这种方式是不可能的。
Console.WriteLine("Using Selenium.WebDriver: " + Assembly.GetAssembly(typeof(OpenQA.Selenium.By)).GetName().Version.ToString());
Run Code Online (Sandbox Code Playgroud)
小智 2
您可以从程序集中读取版本:
string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)