【发布时间】:2014-07-22 21:38:45
【问题描述】:
我不久前发了一篇关于此的帖子,但没有找到有效的解决方案。 没有人说这是不可能的,但有些人认为错误来自其他东西。 所以我创建了一个简单的新解决方案,只是添加了一个通过 XAML(命名空间导入)调用 DLL 的工具包控件 - 我认为这是问题所在。
我添加了一些代码来加载我作为资源嵌入的 DLL。
我的项目可以从这里下载:
https://onedrive.live.com/redir?resid=B293BA834310C42A%21108
对于那些没有时间的人,这里是代码:
MainWindow.xaml:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" x:Class="WpfAppTest1.MainWindow"
Title="MainWindow" Height="350" Width="525">
<Grid>
<chartingToolkit:ScatterSeries HorizontalAlignment="Left" Margin="63,85,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
MainWindow.xaml.cs
namespace WpfAppTest1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
还有我的 App.xaml.cs
namespace WpfAppTest1
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public App()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var execAssembly = Assembly.GetExecutingAssembly();
string resourceName = execAssembly.FullName.Split(',').First() + ".Resources." + new AssemblyName(args.Name).Name + ".dll";
Console.WriteLine(resourceName);
using (var stream = execAssembly.GetManifestResourceStream(resourceName))
{
byte[] assemblyData = new byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
}
}
}
这 2 个 DLL 是: system.windows.controls.datavisualization.toolkit.dll WPFToolkit.dll
两者都作为资源添加,构建操作设置为嵌入式资源。
这 2 个引用是本地复制到 False。
查看 EXE,这两个文件都内置在其中。 我添加了一个控制台写行来打印正在加载的 DLL 的路径...
但我仍然收到错误消息。如果我确实将本地副本设置为 true,它会起作用。
我真的被困在那里,不得不使用这个工具包,我需要 DLL 作为 EXE 的一部分。如果不可能,那么我想从你们中的一位专业人士那里阅读它:)
谢谢 史蒂夫
编辑:有没有解决方案来实现我所需要的? :(
编辑:到今天为止我还没有找到解决方案:/
编辑:我想知道这是否可能。
【问题讨论】:
标签: wpf dll wpftoolkit