Mar*_*hal 3 .net c# wpf telerik
我有以下项目结构:
类库中有几个用户控件,其中包含telerik组件。我有一个宿主应用程序,该应用程序承载了类库中的这些用户控件。
现在的问题是,尽管引用了库中的telerik dll,但我仍然必须在主机应用程序中引用telerik dll。否则它将XamlParseException在运行时抛出。虽然它编译没有错误。
PresentationFramework.dll中发生类型为'System.Windows.Markup.XamlParseException'的第一次机会异常
附加信息:无法加载文件或程序集'Telerik.Windows.Controls.GridView,PublicKeyToken = 5803cfa389c90ce7'或其依赖项之一。该系统找不到指定的文件。
为什么会这样呢?为什么需要复制dll。
我正在使用带有版本的Telerik dll 2015.2.623.45
重现此问题: 我们可以只使用一个用户控件创建一个库
<UserControl>
<Grid>
<telerik:RadGridView></telerik:RadGridView>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
然后创建另一个引用该类库的项目
<Window>
<Grid>
<wpfApplication1:UserControl1/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
并尝试运行它。
(为简便起见,我省略了xmlns定义)
来自以下解决方案:
A)添加对您的主机应用程序的引用
B)将伪代码添加到类库中,以便编译器将检测到正在使用该引用,然后将其复制到您的Host Application Bin文件夹中。
C)添加一个生成事件以强制复制DLL。
仅拥有XAML代码是不够的,原因是编译器不会对其进行评估以查看XAML所依赖的DLL。
我暂时选择了选项B,但我倾向于选择选项A)为最佳实践。
如果您开始在C#中操纵Telerik控件,一切将按预期开始。