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-профили, а не в общий файл проекта. Надеюсь, в будущем сделают соответствующие опции.
Но в целом удобно, хоть и запускается чуть дольше.
Publish Trimmed
же пока не рекомендуют использовать для wpf
Вот тут https://docs.microsoft.com/ru-ru/dotnet/core/whats-new/dotnet-core-3-0#assembly-linking
It's important to consider that applications or frameworks (including ASP.NET Core and WPF) that use reflection or related dynamic features, will often break when trimmed.
Получается после перевода wpf приложения на .net core всем пользователям нужно будет поднять версию net framework на 4.7? А что делать если это не допустимо заставлять всех пользователей обновлять фреймворк?
Если у вас.ехе, то вы просто компилируете её под нужную [версию] ОС и делаете её "self-contained". Или я неправильно понял проблематику?
framework 4.5/4.6. WPF приложение заработает?
Если вы скомпилировали под ту ОС, которая стоит у клиента, то да.
P.S. Просто .exe будет относительно большая так как в неё запихаются все нужные библиотеки от фреймворка. То есть если вы отсылаете клиенту несколько разных .exe, то они все будут иметь внутри "редундантные" библиотеки и тогда возможно логичнее уговорить клиента установить у себя нужный фреймворк.
Портирование WPF приложений на netcore 3.0