Pull to refresh

Comments 18

Особых проблем с переносом старого WPF-приложения на новую платформу не было. Но пока не получилось упаковать его в один exe-файл.
Команда dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true не дала ожидаемого результата. Видимо, я что-то упускаю.

Пробовали поиграться с этими флагами в запускаемом проекте?

    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PublishSingleFile>true</PublishSingleFile>
    <PublishTrimmed>true</PublishTrimmed>


Мне пока удалось завести компиляцию в единый exe для простых Wpf приложений. Для старых и сложных что-то идет не так, но у меня и ворнинги при сборке выдаются, руки не дошли их починить.
Спасибо, работает.
PublishSingleFile создает один файл как для Windows, так и для Linux (консольных) приложений.
А PublishTrimmed на сколько понял подразумевает включение Self-contained и выдает ошибку если включено Framework Dependent.

Единственное но — эти флаги лучше вставлять в Publish-профили, а не в общий файл проекта. Надеюсь, в будущем сделают соответствующие опции.

Но в целом удобно, хоть и запускается чуть дольше.
UFO just landed and posted this here
PublishReadyToRun — с ним побыстрей запускается, но распухает приложение.
UFO just landed and posted this here

Publish Trimmed же пока не рекомендуют использовать для wpf

А можно узнать где об этом пишут? Я сходу не нашел.

Получается после перевода wpf приложения на .net core всем пользователям нужно будет поднять версию net framework на 4.7? А что делать если это не допустимо заставлять всех пользователей обновлять фреймворк?

Если у вас.ехе, то вы просто компилируете её под нужную [версию] ОС и делаете её "self-contained". Или я неправильно понял проблематику?

Проблему поняли правильно. Компилирую WPF приложение, написанное на .NET Core 3.0, под нужную ОС, делаю ее «self-contained». Отдаю пользователю приложение. У пользователю стоит net
framework 4.5/4.6. WPF приложение заработает?

Если вы скомпилировали под ту ОС, которая стоит у клиента, то да.


P.S. Просто .exe будет относительно большая так как в неё запихаются все нужные библиотеки от фреймворка. То есть если вы отсылаете клиенту несколько разных .exe, то они все будут иметь внутри "редундантные" библиотеки и тогда возможно логичнее уговорить клиента установить у себя нужный фреймворк.

UFO just landed and posted this here
Только не .NET Framework, a .NET Core Runtime. Всё же — пока это разные платформы.

Вы это о том библиотели какого фреймворка запихают в.ехе? Тогда да, естественно это будет .NET Core Runtime.

UFO just landed and posted this here
Если «self-contained», то не важно какая версия установлена или совсем отсутствует. Все нужные библиотеки идут в комплекте. Собственно, поэтому и называется «self-contained».
Sign up to leave a comment.