Добавление exe в пакет nuget больше не работает с dot net core

#c# #.net #.net-core #nuget

Вопрос:

У меня есть проект, который создает приложение WinExe, которое используется для подпроцесса. Я использовал для создания пакета nuget из этого проекта, в результате чего исполняемый libnet48 файл оказался внутри пакета nuget. При ссылке на пакет nuget этот исполняемый файл будет помещен в binDebug папку и может быть вызван. Этот подпроцесс является исполняемым файлом dotnet и используется для процесса рендеринга.

Теперь при переходе на dotnet 5 (то же самое для ядра dotnet в целом) Я понимаю, что это больше не поместит exe-файл в пакет nuget. Вместо этого он помещает туда dll. И при восстановлении он даже не смог бы извлечь эту dll из пакета nuget.

Какие варианты у меня теперь есть с ядром dotnet, чтобы снова добиться того же поведения?

Возможный обходной путь, который я вижу, состоит в том, чтобы опубликовать все это и попытаться включить опубликованный exe-файл в пакет nuget с помощью файла nuspec. Это немного похоже на куриное яйцо, потому что сначала мне нужно опубликовать, чтобы я не мог использовать <GeneratePackageOnBuild>true</GeneratePackageOnBuild> . Мне понадобится отдельный шаг после сборки, чтобы создать фактический пакет nuget.

Nuspec будет выглядеть примерно так:

 <?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>$id

lt;/id>
<version>$version


lt;/version>
<authors>$authors


lt;/authors>
<description>$description


lt;/description>
<contentFiles>
<files include="any/any/MySubProcess.exe" buildAction="Content" copyToOutput="true" />
</contentFiles>
</metadata>

<files>
<file src="binpublishMySubProcess.exe" target="contentFilesanyany"/>
</files>
</package>

Есть ли способ избежать этого пути и сделать это так, как это было возможно с «старой» сетевой структурой?