Зависимость пакета Nuget между проектами, когда пакет используется только в XAML - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение C # WPF с приложением Windows и библиотекой классов DLL, которая реализует некоторые представления и модели представления. Я добавил пакет Extended.Wpf.Toolkit в проект DLL и использую элемент управления в этом пакете из XAML в моем проекте DLL. Исполняемый проект ссылается на проект DLL. При сборке отсутствуют библиотеки DLL из пакета, скопированного в папку bin / Debug исполняемого проекта (они, конечно, находятся в папке bin / Debug проекта DLL).

Проект DLL использует некоторые другие пакеты иБиблиотеки этих файлов появляются в исполняемом каталоге bin / Debug автоматически. Единственное отличие в случае Extended.Wpf.Toolkit состоит в том, что у меня нет кода, использующего что-либо из этого пакета.

Я попытался добавить фиктивный код в проект DLL, используя случайный класс из Extended.Wpf.Toolkit, и затем одна из библиотек DLL появилась в bin. Итак, по-видимому, Visual Studio теперь признает зависимость в некоторой степени (хотя она копирует только одну DLL).

Проект XAML в DLL:

<UserControl x:Class="MyNameSpace.PropertyPanel"
    ...
    xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
    >
    <Grid>
        <xctk:PropertyGrid/>
    </Grid>
</UserControl>

Так что, очевидно, мне нужно добавить nugetпакет в исполняемый проект тоже? Чем отличается использование пакета от XAML от codebehind?

Использование Visual Studio 2017 Community Edition, если это имеет значение. Nuget packages.config находится в проекте библиотеки классов:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Extended.Wpf.Toolkit" version="3.6.0" targetFramework="net452" />
  <package id="SharpVectors.Reloaded" version="1.3.0" targetFramework="net452" />
</packages>

Извините за отсутствие простого реплицируемого проекта.

1 Ответ

1 голос
/ 08 октября 2019

Почему между использованием пакета из XAML и codebehind есть разница?

Это известная проблема XAML. Компилятор не копирует ссылки, которые используются только в XAML.

Обходной путь прост. Установите для свойства Copy Local для сборки значение True в проекте библиотеки классов, установите пакет NuGet в потребляющем проекте WPF application.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...