【发布时间】:2021-07-05 11:25:15
【问题描述】:
我编写了一段代码,它为我提供了一个程序集(在 .net5 中)的引用程序集,它运行良好,例如,如果我使用 File.WriteAllText 方法,程序集“System.IO” .FileSystem”(这是通过使用 Assembly.GetReferencedAssemblies 方法)。
但现在我需要让这段代码在 .NET4(用于 Unity 引擎)上工作。但我发现 myAssembly.GetReferencedAssemblies 的输出与 .NET5 中的不同。
它现在只给我:myAssembly.dll 和 mscorlib.dll
而且我无法像以前一样向我提供所有引用的程序集(例如 System 或 System.IO ...)
这是一个简单的例子:
using System.IO;
public class Plugin {
static Plugin() {
// Just use the File class to keep the System.IO assembly reference
File.WriteAllText("test", string.Empty);
}
}
public static void Test() {
string myPluginPath = "myAssembly.dll";
// Load the assembly
Assembly assembly = Assembly.LoadFrom(myPluginPath);
// Get all the referenced assemblies
foreach (AssemblyName name in assembly.GetReferencedAssemblies()) {
Console.WriteLine(name.Name);
// Different outputs:
//
// .NET 5
// - System.IO.FileSystem
// - ....
// .NET 4
// - mscorlib
// - Plugin
}
}
知道如何让 myAssembly.GetReferencedAssemblies 在 .net4 上工作吗?谢谢!
【问题讨论】:
-
请向我们提供minimal reproducible example,向我们展示您在 .NET 4 和 .NET 5 中看到的输出。
-
我添加了一个简单的例子
标签: c# reflection .net-assembly