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

Mar*_*hal 3 .net c# wpf telerik

我有以下项目结构:

  • 类库
    • 参考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定义)

d34*_*m4n 6

来自以下解决方案:

DLL参考未复制到项目bin中

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

B)将伪代码添加到类库中,以便编译器将检测到正在使用该引用,然后将其复制到您的Host Application Bin文件夹中。

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

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

我暂时选择了选项B,但我倾向于选择选项A)为最佳实践。

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