C# 使用Telerik组件正确部署应用程序

C# 使用Telerik组件正确部署应用程序,c#,.net,wpf,telerik,C#,.net,Wpf,Telerik,我有以下项目结构: 类库 参考Telerik控件 主机应用程序 参考类库 类库中有几个usercontrols,其中包含telerik组件。我有一个宿主应用程序,它从类库托管这些用户控件 现在的问题是,尽管在库中引用了telerik DLL,但我仍然必须在主机应用程序中引用telerik DLL。或者在运行时抛出XamlParseException。不过,它编译时没有错误 类型的第一次机会例外 中出现“System.Windows.Markup.XamlParseException”

我有以下项目结构:

  • 类库
    • 参考Telerik控件
  • 主机应用程序
    • 参考类库
类库中有几个usercontrols,其中包含telerik组件。我有一个宿主应用程序,它从类库托管这些用户控件

现在的问题是,尽管在库中引用了telerik DLL,但我仍然必须在主机应用程序中引用telerik DLL。或者在运行时抛出
XamlParseException
。不过,它编译时没有错误

类型的第一次机会例外 中出现“System.Windows.Markup.XamlParseException” PresentationFramework.dll

其他信息:无法加载文件或程序集 'Telerik.Windows.Controls.GridView,PublicKeyToken=5803cfa389c90ce7' 或者它的一个依赖项。系统找不到指定的文件

为什么会这样?为什么需要复制DLL

我正在使用Telerik dll,其版本为
2015.2.623.45


复制此问题: 我们只需要创建一个带有一个usercontrol的库

<UserControl>
       <Grid>
          <telerik:RadGridView></telerik:RadGridView>  
       </Grid>
 </UserControl>

然后创建另一个引用此类库的项目

<Window>
    <Grid>
        <wpfApplication1:UserControl1/>
    </Grid>
</Window>

试着运行它


(为了简洁起见,我省略了xmlns定义)

取自以下解决方案:

A) 添加对主机应用程序的引用

B) 在类库中添加伪代码,以便编译器能够检测 正在使用引用,然后将其复制到主机应用程序Bin文件夹中

C) 添加生成事件以强制复制DLL

仅仅拥有XAML代码是不够的,因为编译器不会对其进行计算,以查看XAML依赖于哪个DLL

我现在选择了选项B,但我倾向于选项A)作为最佳实践


如果您在某个时候开始用C#操作telerik控件,一切都将按预期开始工作。

在实际使用DLL的项目文件中,将此添加到
部分:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
true

现在,DLL将被复制到该项目和所有引用项目的输出文件夹。

这正是我所做的。谢谢你的解释。