我在winforms项目上编程了大约一个月。最近,其中一位表单设计者总是显示错误页面。
当项目刚刚加载到VS上时,没有错误。在我进行一些修改后,重建它将显示错误页面:
组件' LiveCharts.Wpf.DefaultLegend'没有由URL' /LiveCharts.Wpf; component / defaultlegend.xaml'标识的资源。
并且调用堆栈显示:
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at LiveCharts.Wpf.DefaultLegend.InitializeComponent() in c:\Users\btord\Documents\Projects\LiveCharts\WpfView\DefaultLegend.xaml:line 1
at LiveCharts.Wpf.Charts.Base.Chart..ctor() in c:\Users\btord\Documents\Projects\LiveCharts\WpfView\Charts\Base\Chart.cs:line 82
at LiveCharts.Wpf.CartesianChart..ctor() in c:\Users\btord\Documents\Projects\LiveCharts\WpfView\CartesianChart.cs:line 40
at LiveCharts.WinForms.CartesianChart..ctor() in c:\Users\btord\Documents\Projects\LiveCharts\WinFormsView\CartesianChart.cs:line 46
at Controls.Chart.MyChart.InitializeComponent()
at Controls.Chart.MyChart..ctor()
我检查了路径但发现没有&c; \ Users \ btord'目录和几天前我将我的Documents目录移动到D驱动程序。
有时在我发布版本后,它会显示另一个错误页面:
无法加载文件或程序集' LiveCharts.WinForms,Version = 0.9.6.0,Culture = neutral,PublicKeyToken = 0bc1f845d1ebb8df'或其中一个依赖。
设计师的源代码根本没有错误,无论是在构建时。执行文件可以健康运行。
答案 0 :(得分:0)
当解决方案版本中存在多个实时图表dll副本时,通常会发生这种情况。
对我来说,它既在主可执行文件中使用,又在子文件夹中的插件类库中使用。效果是将Live Charts dll的两个副本放在不喜欢的不同文件夹中。
Packages.config
如果使用packages.config文件处理引用,则可以将其他项目的LiveCharts引用设置为“ CopyLocal” = false。这将停止生成该dll的多个副本。它将很乐意使用主项目中加载的副本。
包装参考
不幸的是,在使用较新的样式包引用时,没有选择不复制文件的选项。 构建后删除多余的副本似乎是我找到的最简单的解决方法。
在“项目属性”的“构建事件”页面中,在构建事件后的命令行框中添加
del $(TargetDir)LiveCharts.*
$(TargetDir)是您的项目输出路径。