使用Telerik组件正确部署应用程序
本文关键字:部署 应用程序 Telerik 组件 使用 | 更新日期: 2023-09-27 18:19:25
我有以下项目结构:
- ClassLibrary
- 参考Telerik控件
- 主机应用程序
- 引用类库
类库有几个用户控件,其中包含telerik组件。我有一个主机应用程序,它托管类库中的这些用户控件。
现在的问题是,尽管在图书馆中引用了telerik dlls,但我仍然必须在我的主机应用程序中引用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的定义)
小时>取自以下解决方案:
DLL引用未复制到项目bin
A) 添加对主机应用程序的引用
B) 在类库中添加伪代码,以便编译器检测到正在使用引用,然后将其复制到您的Host Application Bin文件夹中。
C) 添加生成事件以强制复制DLL。
仅仅拥有XAML代码是不够的,因为编译器没有对其进行评估,以查看XAML依赖于什么DLL。
我现在选择了选项B,但我倾向于将选项A作为最佳实践。
如果你在某个时候开始在C#中操纵遥控器,一切都会按预期开始工作。
在实际使用DLL的项目文件中,将其添加到<PropertyGroup>
部分:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
现在DLL将被复制到这个和所有引用项目的输出文件夹中。