Fody Costura не встраивает библиотеку SkiaSharp - PullRequest
0 голосов
/ 09 октября 2018

Я создал решение, использующее пакет nuget Costura.Fody для объединения ссылочных сборок в качестве встроенных ресурсов.Я хочу это, чтобы я мог создать один exe для моего приложения.Некоторое время это работало замечательно, пока я не добавил ссылку на SkiaSharp (в частности, пакеты nuget SkiaSharp и SkiaSharp.Svg).LibSkiaSharp.dll не встроен, а встроен в папку проекта запуска, и я не могу запустить программу exe самостоятельно, если не храню dll в той же папке.Есть ли способ это исправить?

Вот шаги, чтобы воспроизвести это:

1. Создайте новый проект WPF
2. Добавьте пакеты nuura Costura.Fody и Fody.
3. Добавьте файл с именемFodyWeavers.xml с содержимым, установленным на это:

<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
  <Costura/>
</Weavers> 
Создайте и запустите исполняемый файл в папке bin / Debug.Обратите внимание, что программа запустится, даже если вы переместите exe-файл в новое место. Добавьте пакеты nuget SkiaSharp и SkiaSharp.Svg. получите файл svg и добавьте его в каталог вашего проекта

добавить следующий код в конструктор MainWindow:

var svg = new SKSvg ();svg.Load ( "image.svg");SKCanvas canvas = новый SKCanvas (новый SKBitmap ());canvas.DrawPicture (svg.Picture);

обратите внимание, что если вы скопируете файл изображения и исполняемый файл и поместите его в другой каталог, то исполняемый файл не запустится.Это происходит потому, что он не может найти libSkiaSharp.dll.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вы пробовали следующее:

<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
  <Costura>
    <IncludeAssemblies>
        libSkiaSharp
    </IncludeAssemblies>
  </Costura>
</Weavers>
0 голосов
/ 10 октября 2018

Создайте папку Costura32 и / или Costura64 в своем проекте.Скопируйте libSkiaSharp.dll в соответствующий каталог в зависимости от его разрядности.Costura автоматически распакует и загрузит собственные двоичные файлы из этих каталогов.

...