MahApps.Metro не может загрузить файл или сборку в расширение Visual Studio

Я использую элементы управления MahApps.Metro в своем коде XAML для панели инструментов в расширении Visual Studio. Я установил пакет через NuGet, затем попытался добавить элемент управления в свою разметку XAML. Ниже приведен фрагмент кода.

<UserControl
    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:custom="http://metro.mahapps.com/winfx/xaml/controls" 
    x:Class="AutoDebug.MyControl"
    Background="{DynamicResource VsBrush.Window}"
    Foreground="{DynamicResource VsBrush.WindowText}"
    mc:Ignorable="d"
    d:DesignHeight="500" d:DesignWidth="400"
    DataContext="{Binding UserControlModel}"
    x:Name="AutoDebugWindow">

    <Grid Margin="15">
        <custom:Tile Content="Tile" HorizontalAlignment="Left" Margin="75,150,0,0" VerticalAlignment="Top" Background="#FF8B00BF"/>
    </Grid>
</UserControl>

Но я получаю следующую ошибку, несмотря ни на что.

Возникло первое случайное исключение типа «System.Windows.Markup.XamlParseException» в PresentationFramework.dll.

Дополнительная информация: не удалось загрузить файл или сборку «MahApps.Metro, PublicKeyToken=null» или одну из его зависимостей. Система не может найти указанный файл.

Я уже пробовал устанавливать/удалять, удалять/добавлять ссылки, но пока ничего не получилось.


person Shahzad    schedule 01.12.2015    source источник
comment
Прочтите документацию по быстрому запуску, и вы сможете заставить ее работать: mahapps.com/guides/quick- start.html   -  person Sybren    schedule 01.12.2015
comment
Я выполнил шаги. Но это не помогает. Также добавление кода для справки.   -  person Shahzad    schedule 02.12.2015
comment
@shahzad Кажется, что расширение Visual Studio не загружает dll MahApps ...   -  person punker76    schedule 02.12.2015
comment
@ punker76 Да, кажется. Но я не могу понять, почему   -  person Shahzad    schedule 02.12.2015
comment
@shahzad- решил вашу проблему. да, тогда как, пожалуйста.   -  person J R B    schedule 03.02.2016


Ответы (1)


Это вызвано тем, что MahApps.Metro не включается в качестве ссылки при компиляции расширения Visual Studio.

Я не совсем понимаю, почему, но если вы используете MahApps только в XAML, то в скомпилированную сборку не включается ссылка. Вы можете проверить это, распаковав расширение (это просто zip-файл) и открыв сборку в ILSpy. В ссылках MahApps не будет указан.

Обходной путь для этого — использовать MahApps где-нибудь в коде. Самый простой способ сделать это — назвать элемент управления MahApps, который вы используете. Это создает поле для элемента управления, и этого достаточно, чтобы ссылка была включена в сборку.

<Grid Margin="15">
    <custom:Tile x:Name="MyTile" />
</Grid>

Вы также можете использовать объект из сборки MahApps в любом другом месте кода (например, вы можете создать новый объект в конструкторе Package), но дать одному из элементов управления имя, вероятно, самый простой способ.

person reduckted    schedule 13.10.2016