在引用的项目中获取主项目的版本
Posted
技术标签:
【中文标题】在引用的项目中获取主项目的版本【英文标题】:Get main project's version in a referenced project 【发布时间】:2021-12-16 04:18:48 【问题描述】:我有一个Main
项目,它引用了一个项目Sub
,这是一个类库。
在 Sub
中,我有一个自定义 UI 控件,用于显示我的应用程序的版本。
此控件在我的应用程序中的多个位置使用。不仅是Main
项目。
我的应用程序版本是 AssemblyInfo 文件中 Main
项目的版本。
我正在寻找在Sub
项目中获取Main
项目版本的方法。
我发现我在 UserControl 中运行的这一行:
var mainVersion = AssemblyName.GetAssemblyName("ThePathToMain.exe").Version;
这会给我Main
项目的版本,这是我想要的。
问题
还有其他方法吗?
或者有没有办法避免Main
项目可执行文件的硬编码字符串?
我的 Main
项目中不能有 UserControl,因为它在我的解决方案中的其他项目中使用。
将Main
项目作为Sub
项目中的引用将导致循环引用并且不起作用。
【问题讨论】:
你可以使用Assembly.GetEntryAssembly().GetName()
,假设你的主项目是可执行的并且没有被另一个项目使用。
如果你有winforms项目,也可以使用Application.ProductVersion
【参考方案1】:
感谢@Evk,我找到了这个解决方案:
var name = Assembly.GetEntryAssembly().GetName();
var parts = name.CodeBase.Split('/');
var executable = parts.Last();
var version = AssemblyName.GetAssemblyName(executable).Version;
【讨论】:
你为什么这样做而不是像@Evk 所建议的那样?您的变量name
已经有您要查找的版本。以上是关于在引用的项目中获取主项目的版本的主要内容,如果未能解决你的问题,请参考以下文章