#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>$versionlt;/version>
<authors>$authorslt;/authors>
<description>$descriptionlt;/description>
<contentFiles>
<files include="any/any/MySubProcess.exe" buildAction="Content" copyToOutput="true" />
</contentFiles>
</metadata><files>
<file src="binpublishMySubProcess.exe" target="contentFilesanyany"/>
</files>
</package>
Есть ли способ избежать этого пути и сделать это так, как это было возможно с «старой» сетевой структурой?