【发布时间】:2011-09-21 10:53:51
【问题描述】:
我已将 WPFToolkit.Extended.dll 添加到我的解决方案中,并将其构建操作设置为嵌入式资源。
在 App.OnStartup(StartupEventArgs e) 我有以下代码:
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
String resourceName = "AssemblyLoadingAndReflection." + new AssemblyName(args.Name).Name + ".dll";
String assemblyName = Assembly.GetExecutingAssembly().FullName;
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
using (stream)
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
调试器两次命中这段代码。
第一次:
resourceName is "AssemblyLoadingAndReflection.StatusUtil.resources.dll"
assemblyName is "StatusUtil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
stream is null
第二次:
resourceName is "AssemblyLoadingAndReflection.WPFToolkit.Extended.resources.dll"
assemblyName is "StatusUtil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
stream is null
代码在到达 stream.Length 时抛出异常,因为它为空。
我不能使用 ILMerge,因为它是 WPF 项目。
【问题讨论】: