如何在不加载程序集的情况下获取程序集的版本?
大型程序的一个小功能会检查文件夹中的程序集,并用最新版本替换过时的程序集。 为了实现这一点,它需要读取现有程序集文件的版本号,而不实际将这些程序集加载到执行进程中。
One small function of a large program examines assemblies in a folder and replaces out-of-date assemblies with the latest versions. To accomplish this, it needs to read the version numbers of the existing assembly files without actually loading those assemblies into the executing process.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我发现以下 在本文中。
I found the following in this article.
根据文件的不同,一个选项可能是
FileVersionInfo
- 即问题在于,这取决于具有
[AssemblyFileVersion]
属性的代码,并且它与[ AssemblyVersion]
属性。不过,我想我会先看看其他人建议的 AssemblyName 选项。
Depending on the files, one option might be
FileVersionInfo
- i.e.The problem is that this depends on the code having the
[AssemblyFileVersion]
attribute, and it matching the[AssemblyVersion]
attribute.I think I'd look at the AssemblyName options suggested by others first, though.
使用
AssemblyName.GetAssemblyName("assemble.dll");
,然后解析名称。 根据 MSDN:Use
AssemblyName.GetAssemblyName("assembly.dll");
, then parse the name. According to MSDN:仅供记录:以下是如何在 C#.NET Compact Framework 中获取文件版本。 它基本上来自 OpenNETCF,但相当短且精炼,因此可以通过复制粘贴来实现。 希望它会有所帮助...
Just for the record: Here's how to get the file version in C#.NET Compact Framework. It's basically from OpenNETCF but quite shorter and exctacted so it can by copy'n'pasted. Hope it'll help...
使用 AssemblyLoadContext:
A
.netcore
update to Joel's answer, using AssemblyLoadContext: