ILRepack из .NET 4.7.2 Консольное приложение C #, созданное с помощью Visual Studio 2017, требует наличия платформы, установленной в Windows 7 - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть следующее событие после сборки, которое должно упаковать все зависимости .NET Framework в .exe:

$(SolutionDir)packages\ILRepack.2.0.16\tools\ILRepack.exe
/out:"$(TargetDir)$(TargetName).all.exe" 
"$(TargetDir)$(TargetName).exe" 
"$(TargetDir)*.dll" 
/target:exe 
/targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2" /wildcards

Но оно не должно упаковывать все, так как, когда я запускаю его в barebones Windows7 x64 VM, всплывающее окно говорит, что требуется .NET.После установки .NET 4.7.2 все работает нормально.

Вот вывод ILRepack:

4>------ Rebuild All started: Project: GenerateReport, Configuration: Release Any CPU ------
4>  GenerateReport -> C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.exe
4>  INFO: IL Repack - Version 2.0.16
4>  INFO: ------------- IL Repack Arguments -------------
4>  /out:C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.all.exe  C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.exe C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\*.dll
4>  -----------------------------------------------
4>  INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\GenerateReport.exe
4>  INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\ICSharpCode.SharpZipLib.dll
4>  INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\MDIData.dll
4>  INFO: Adding assembly for merge: C:\code\Thor\Main\pc\tools\ReportGenerator\GenerateReport\bin\Release\MDIReporter.dll
4>  INFO: Processing references
4>  INFO: Processing types
4>  INFO: Merging <Module>
4>  INFO: Merging <Module>
4>  INFO: Merging <Module>
4>  INFO: Renaming <PrivateImplementationDetails> into <ea0a2b3c-dc31-41d4-9795-6271bac3aa6b><PrivateImplementationDetails>
4>  INFO: Merging <Module>
4>  INFO: Processing exported types
4>  INFO: Processing resources
4>  INFO: Fixing references
4>  INFO: Writing output assembly to disk
4>  INFO: Finished in 00:00:02.2785005

Это консольное приложение C #, созданное с помощью «Любого процессора».

Два других проекта в моем решении - это библиотеки классов рабочего стола .NET 4.7.2.

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

1 Ответ

0 голосов
/ 09 декабря 2018

ILRepack / ILMerge объединяет только зависимости, отличные от .NET Framework, в конечный вывод (если вы специально не пытаетесь объединить сборки фреймворка).Но вам все равно понадобятся оригинальные библиотеки .NET, которые будут доступны.Поэтому, если вы используете 4.7.2, вам нужно 4.7.2 на целевой машине.

Если вы пытались «опустить» целевую версию .NET Framework (то есть, чтобы она работала без каких-либо других действий наWindows 7), тогда это не сработает, вам придется настроить таргетинг на .NET 4.0 (по умолчанию в Windows 7 после обновления Windows)

Если вы хотите автономный исполняемый файл, который нетребуются дополнительные установки, вам стоит взглянуть на .NET Core , который поставляет .NET framework вместе с приложением.

...