зависимости пакетов .net core

#.net #dependencies #.net-core

#.net #зависимости #.net-core

Вопрос:

Я хочу создать собственный исполняемый файл .NET Core, который я могу развернуть, но когда я публикую проект, компилятор экспортирует все зависимости в один и тот же каталог, и исполняемый файл нуждается в них для запуска в системе, в которой не установлена среда выполнения .NET Core. Есть ли способ скомпилировать / упаковать DLL-файлы в DLL проекта или исполняемый файл? Спасибо.

Комментарии:

1. Почему это должен быть только один файл?

2. Для переносимого двоичного выпуска.

3. Я думаю, что это оксюморон. На самом деле у вас не может быть переносимой двоичной версии, потому что каждая платформа имеет свой двоичный формат файла.

4. Переносимость не означает кроссплатформенность. Это означает готовность к запуску, где бы она ни находилась (в среде сборки, для которой она предназначена). Т.е. без необходимости выполнения / зависимостей / библиотек. Программе не должен требоваться установщик для ее запуска (требуются записи регистра и т. Д.), Все это должно быть автономным.

Ответ №1:

Для объединения зависимостей в скомпилированную сборку ознакомьтесь с Costura для Fody:

https://github.com/Fody/Fody

https://github.com/Fody/Costura

Я использовал его раньше, и он работает хорошо. Вы можете определить определенные зависимости для объединения в файле с именем FodyWeavers.xml (примеры см. по ссылке Costura-Fody).

Так, например (взято из Costura README.md ) у вас могут быть две зависимости ‘Foo’ и ‘Bar’, которые могут быть объединены в вашу целевую сборку следующим образом в FodyWeavers.xml досье.

 <Costura>
    <IncludeAssemblies>
        Foo
        Bar
    </IncludeAssemblies>
</Costura>
  

Помимо этого, ILMerge — отличный способ пойти: https://www.nuget.org/packages/ilmerge

РЕДАКТИРОВАТЬ: найдена ссылка, описывающая необходимое развертывание.Зависимости сетевого ядра в автономном приложении: http://druss.co/2016/08/deploy-and-run-net-core-application-without-installed-runtime-self-contained-applications/

Комментарии:

1. Я искал более собственное решение в рамках .NET Core framework, но это решение будет работать так же хорошо. Я уже пытался создать автономный исполняемый файл, но все, что он делает, это включает библиотеки времени выполнения в двоичный файл и экспортирует DLL в папку экспорта. Это означает, что если вы попытаетесь запустить исполняемый файл вне каталога его зависимостей, он вернет сообщение «Ошибка: отсутствует сборка». Я не знаю, является ли это преднамеренным или .NET Core действительно должен привязывать зависимости к сборке. Спасибо за ответ.