获取程序集的全名

JMa*_*sch 5 c# .net-assembly

假设我想显示程序集的全名,只给出程序集文件的路径.

我知道我可以很容易地编写命令行程序或powershell脚本,但运行时是否包含我可以使用的命令?(我已经看到gacutil为gac中的程序集执行此操作,但是关于未注册的程序集?)

小智 17

我想你正在寻找System.Reflection.AssemblyName.GetAssemblyName:

AssemblyName name = AssemblyName.GetAssemblyName(@"C:\path\assembly.dll");
Console.WriteLine(name.FullName);
Run Code Online (Sandbox Code Playgroud)

与使用Assembly.Load的解决方案不同,这不会将程序集加载到AppDomain中.这将允许您获取程序集的AssemblyName,而无需解析程序集具有的任何引用,也无需在程序集中执行任何代码(例如模块静态构造函数).它甚至可以让你获得一个程序集的AssemblyName,该程序集的目标是.NET Framework的一个版本,它与运行应用程序的版本不同.


Mar*_*ell 5

全名的主要问题部分通常是公钥令牌.您可以通过在Visual Studio命令提示符窗口中输入它来获取它:

sn -T path\to\your.dll
Run Code Online (Sandbox Code Playgroud)

就个人而言,我发现将dll加载到反射器中更容易.这显示了底部面板中的全名.

  • +1,实际了解这里要问的内容. (4认同)