gpt4 book ai didi

使用 Graph# 库时出现 XamlParseException

转载 作者:行者123 更新时间:2023-12-01 05:03:59 25 4
gpt4 key购买 nike

我正在尝试使用 Graph#我的 VSPackage 项目中的库,但不幸的是有一些障碍需要克服。这是我所做的:

我将以下所有 DLL 复制到项目根目录中的文件夹/Libraries 中:

  • GraphSharp.dll
  • GraphSharp.Controls.dll
  • QuickGraph.dll
  • WPFExtensions.dll

所有的构建操作都是“内容”,选项“复制到输出”设置为“不复制”。

我将这些引用添加到我的项目中。 (添加引用... -> 浏览 -> 从/Library 文件夹中选择它们)

之后,我创建了以下文件。您可以看到 ViewModel 设置为 UserControl 的 DataContext,并且它定义了 UI 绑定(bind)到的“MethodGraph”。

XAML 文件

<UserControl x:Class="Biocoder.InteractiveExploration.View.ExplorationControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:graphsharp="clr-namespace:GraphSharp.Controls;assembly=GraphSharp.Controls"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

<ListView Grid.Row="0" ItemsSource="{Binding SelectedMethods}">
<ListView.View>
<GridView>
<GridViewColumn Header="Method" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="ReturnType" DisplayMemberBinding="{Binding ReflectionInfo.ReturnType}"/>
<GridViewColumn Header="Incoming Calls"/>
<GridViewColumn Header="Outgoing Calls"/>
</GridView>
</ListView.View>
</ListView>

<graphsharp:GraphLayout Graph="{Binding MethodGraph}"/>

</Grid>

</UserControl>

代码隐藏

public partial class ExplorationControl : UserControl
{
public ExplorationControl()
{
InitializeComponent();

// set the datacontext
DataContext = InteractiveExplorationPackage.ExplorationToolViewModel;
}
}

View 模型

public class ExplorationToolViewModel : ViewModelBase
{
private IBidirectionalGraph<object, IEdge<object>> _methodGraph;

public IBidirectionalGraph<object, IEdge<object>> MethodGraph
{
get { return _methodGraph; }
set
{
if (value != _methodGraph)
{
_methodGraph = value;
NotifyPropertyChanged("MethodGraph");
}
}
}

public ExplorationToolViewModel()
{
InitializeViewModel();
}

private void InitializeViewModel()
{
SelectedMethods = new ObservableCollection<Method>();
CreateGraph();
}

private void CreateGraph()
{
var g = new BidirectionalGraph<object, IEdge<object>>();

// add vertices
string[] vertices = new string[5];
for (int i = 0; i < 5; i++)
{
vertices[i] = i.ToString();
g.AddVertex(vertices[i]);
}

// add edges
g.AddEdge(new Edge<object>(vertices[0], vertices[1]));
g.AddEdge(new Edge<object>(vertices[1], vertices[2]));
g.AddEdge(new Edge<object>(vertices[2], vertices[3]));
g.AddEdge(new Edge<object>(vertices[3], vertices[1]));
g.AddEdge(new Edge<object>(vertices[1], vertices[4]));

MethodGraph = g;
}
}

幸运的是,我可以编译整个项目,但在运行时 XAML 中的以下错误发生在标记上(在所需标记的正上方):

无法加载文件或程序集“GraphSharp.Controls,PublicKeyToken=null”或其依赖项之一。系统找不到文件。

但我引用了程序集,它们列在引用列表中。有什么问题?在编写 Visual Studio 包(插件)时,是否必须以不同于平常的方式引用程序集?

编辑:我只是试图让它在另一个项目中工作,所以我只是设置了一个普通的 WPF 应用程序并完成了上述所有操作。在此解决方案中,一切正常!这太奇怪了!

希望你能帮助我:-)最好的问候!

最佳答案

您可以在您的项目中使用 nuget 吗?如果是这样,您应该尝试运行 install-package graphsharp 命令,而不是手动复制 dll-s 和引用。

我认为这是某种 DLL strong name 问题。

关于使用 Graph# 库时出现 XamlParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com