BuildManager.adpreferencedassembly完全正确
本文关键字:完全正确 adpreferencedassembly BuildManager | 更新日期: 2023-09-27 17:50:18
MSDN表示"将程序集添加到应用程序的引用程序集"。但如何?影响究竟发生在哪里?是否有任何可枚举/列表的引用程序集访问和手动添加到它们?
实际上如果我们在应用启动后调用这个方法它会抛出
"此方法只能在应用程序的预启动期间调用初始化阶段。使用PreApplicationStartMethodAttribute to声明将在该阶段调用的方法。"
ok。现在我不想用它了。我想知道它到底做了什么,然后在我的自定义函数中进行模拟。由于
还好我们有源代码:
public static void AddReferencedAssembly(Assembly assembly)
{
if (assembly == null)
{
throw new ArgumentNullException("assembly");
}
ThrowIfPreAppStartNotRunning();
s_dynamicallyAddedReferencedAssembly.Add(assembly);
}
s_dynamicallyAddedReferencedAssembly.Add
是编译时要考虑的动态添加程序集的List<Assembly>
。
还有一个叫做GetReferencedAssembiles
的内部方法,它获取项目的所有程序集,迭代并将所有动态添加的程序集添加到引用程序集列表中:
internal static ICollection GetReferencedAssemblies(CompilationSection compConfig,
int removeIndex)
{
// shorted for brevity
foreach (Assembly assembly in s_dynamicallyAddedReferencedAssembly)
{
referencedAssemblies.Add(assembly);
}
}