1

我已经在一个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' 或其依赖项之一。

而且设计器的源代码完全没有错误,在构建时也没有。执行文件可以正常运行。

4

1 回答 1

0

当解决方案构建中存在多个实时图表 dll 副本时,似乎通常会发生这种情况。
对我来说,它在主可执行文件和子文件夹中构建的插件类库中都使用了。效果是它不喜欢的不同文件夹中的 Live Charts dll 的两个副本。

包.config

如果使用 packages.config 文件来处理引用,您可以将 LiveCharts 引用设置为“CopyLocal”=false 以用于额外的项目。这会阻止 dll 的多个副本被包含在构建中。它将愉快地使用在主项目中加载的副本。

包参考

遗憾的是,在使用较新样式的包引用时,没有不复制文件的选项。在构建后删除额外的副本似乎是我发现的最简单的解决方法。

在项目属性,构建事件页面,发布构建事件命令行框添加

del $(TargetDir)LiveCharts.*

$(TargetDir) 是您的项目输出路径。

于 2020-06-23T03:31:02.280 回答