MSDN说它"将一个程序集添加到应用程序的一组引用程序集中。"。但怎么样?效果恰好发生的地方?是否有任何可引用的/可引用程序集列表可供访问并手动添加到它们中?
实际上,如果我们在app启动后调用此方法,则抛出
"此方法只能在应用程序的预启动期间调用 初始化阶段。使用PreApplicationStartMethodAttribute 声明一个将在该阶段调用的方法。"
确定。现在我不想用它。我想知道究竟做了什么,然后我在我的自定义函数中模拟。 感谢
答案 0 :(得分:3)
这是一个很好的想法we have the source code:
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);
}
}