#c# #command-line-interface #.net-core-2.2
#c# #интерфейс командной строки #.net-core-2.2
Вопрос:
Я создаю exe-файл, который я хочу использовать как «глобальный инструмент dotnetcore», а также как автономный exe-файл. Вот как выглядит мой csproj:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
<LangVersion>7.1</LangVersion>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<PlatformTarget>AnyCPU</PlatformTarget>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
<PackAsTool>true</PackAsTool>
<IsPackable>true</IsPackable>
<ToolCommandName>HostRunner</ToolCommandName>
<PackageOutputPath>./nupkg</PackageOutputPath>
<AssemblyName>HostRunner</AssemblyName>
</PropertyGroup>
Я могу запустить dotnet pack
без проблем, но когда я запускаю
dotnet publish my.csproj -r=win10-x64 -c=Debug --self-contained
Я получаю сообщение об ошибке error NETSDK1053: Pack as tool does not support self contained.
Что я делаю не так ?!
Ответ №1:
Вам нужны два csproj. Один для пакета nuget и один для exe-файла. Сделайте exe-файл с использованием пакета nuget.
Ответ №2:
Я столкнулся с той же проблемой. Я использую отдельную группу свойств, определенную следующим образом:
<PropertyGroup Condition="$(TargetFramework) != 'net462'">
<PackAsTool>true</PackAsTool>
<ToolCommandName>my-command</ToolCommandName>
<PackageOutputPath>./nupkg</PackageOutputPath>
</PropertyGroup>
Комментарии:
1. Можете ли вы объяснить, что делает «$ (RuntimeIdentifier) == «»?
Ответ №3:
Та же проблема здесь, нашел ответ на GitHub
просто удалил директиву
<PackAsTool>true</PackAsTool>
в файле .csproj все работало так же, как и раньше.