.netcore 程序中获取所有引用的dll
时间: 2024-04-30 15:25:04 浏览: 191
在 .NET Core 中,可以使用以下方法获取程序集引用的所有 DLL:
1. 使用 `Assembly.GetEntryAssembly()` 方法获取当前应用程序的主程序集。
2. 通过 `Assembly.GetReferencedAssemblies()` 方法获取主程序集引用的所有程序集。
3. 遍历得到的程序集列表,使用 `Assembly.Load()` 方法加载每个程序集,得到程序集的 `Assembly` 对象。
4. 使用 `Assembly.Location` 属性获取程序集的文件路径,即可得到所有引用的 DLL。
以下是一个示例代码:
```csharp
var assembly = Assembly.GetEntryAssembly();
var referencedAssemblies = assembly.GetReferencedAssemblies();
foreach (var assemblyName in referencedAssemblies)
{
var loadedAssembly = Assembly.Load(assemblyName);
var dllPath = loadedAssembly.Location;
Console.WriteLine(dllPath);
}
```
注意,这个方法只能获取已经加载的程序集,如果某些程序集还没被加载,那么它们也不会被列出来。
相关问题
.netcore 程序中获取所有引用的dll,所括未加载的程序集
可以通过反射获取程序集依赖的所有程序集,包括未加载的程序集。
首先,需要获取当前程序集的 Assembly 对象,可以使用以下代码:
```csharp
Assembly assembly = Assembly.GetEntryAssembly();
```
然后,可以通过 Assembly 对象的 GetReferencedAssemblies() 方法获取当前程序集引用的所有程序集:
```csharp
Assembly[] referencedAssemblies = assembly.GetReferencedAssemblies();
```
此时,referencedAssemblies 数组中包含了当前程序集引用的所有程序集的 AssemblyName 对象。
如果需要获取所有引用的程序集(包括未加载的程序集),可以使用 Assembly.Load() 方法加载每个程序集并获取其 Assembly 对象:
```csharp
List<Assembly> allAssemblies = new List<Assembly>();
foreach (AssemblyName assemblyName in referencedAssemblies)
{
Assembly assembly = Assembly.Load(assemblyName);
allAssemblies.Add(assembly);
}
```
此时,allAssemblies 列表中包含了所有引用的程序集的 Assembly 对象,包括未加载的程序集。需要注意的是,如果未加载的程序集有依赖关系,也需要递归获取其依赖的程序集。
阅读全文