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

Posted

技术标签:

【中文标题】使用 Telerik 组件正确部署应用程序【英文标题】:Correctly deploying Application with Telerik components 【发布时间】:2016-01-27 08:55:30 【问题描述】:

我有以下项目结构:

类库 参考 Telerik Controls 主机应用程序 参考类库

类库有几个用户控件,其中包含 Telerik 组件。我有一个宿主应用程序,它承载来自类库的这些用户控件。

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

类型的第一次机会异常 'System.Windows.Markup.XamlParseException' 发生在 PresentationFramework.dll

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

为什么会这样?为什么需要复制 dll。

我正在使用版本为 2015.2.623.45 的 Telerik dll


重现此问题: 我们可以只用一个用户控件创建一个库

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

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

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

并尝试运行它。

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

【问题讨论】:

【参考方案1】:

取自以下解决方案:

DLL reference not copying into project bin

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

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

C) 添加构建事件以强制复制 DLL。

仅拥有 XAML 代码还不够的原因是编译器不会对其进行评估以查看您的 XAML 所依赖的 DLL。

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

如果您开始在 C# 中操作 Telerik 控件,一切都会按预期开始。

【讨论】:

这正是我所做的。谢谢你的解释。【参考方案2】:

在实际使用 DLL 的项目文件中,将其添加到 &lt;PropertyGroup&gt; 部分:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

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

【讨论】:

以上是关于使用 Telerik 组件正确部署应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Web/移动UI开发框架Telerik UI for PHP全新发布R3 2020

Telerik UI Nativescript - RadListView 涟漪效应

任务栏上没有显示Telerik RadWindow图标c#wpf [复制]

Telerik RadMenu XAML 设计器错误

Flex/Flash 专业组件 - 啥是 Telerik 等公司的等价物?

Telerik MVC 网格分页错误