Вызовите исполняемый файл внутри кэша пакета Nuget из launchSettings. json - PullRequest
0 голосов
/ 05 февраля 2020

Я создал небольшой исполняемый файл, который используется для запуска и отладки указанных c библиотек из других решений. Исполняемому файлу дается путь к библиотеке в качестве аргумента командной строки, который исполняемый файл загружает во время выполнения.

Я хочу поместить свой исполняемый файл в пакет Nuget, и библиотеки-потребители просто добавляют пакет Nuget, чтобы иметь возможность для запуска и отладки, используя launchSettings. json.

Поскольку исполняемый файл находится в каталоге tools / пакета Nuget, его путь помещается в переменную среды PATH с помощью консоли диспетчера пакетов. Поэтому launchSettings может просто вызвать исполняемый файл.

Я создаю свой пакет Nuget с nuget.exe pack my.nuspec -Version 1.0.0, с my.nuspe c, содержащим:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>DebugHost</id>
    <version>$version$</version>
    <title>DebugHost</title>
    <authors>Some company</authors>
    <owners>Some company</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>DebugHost</description>
    <summary>DebugHost</summary>
    <copyright>2020, Some company</copyright>
  </metadata>
  <files>
    <file src="bin\Debug\netcoreapp3.1\*" target="tools" />
  </files>
</package>

Из библиотечных проектов, которые я помещаю в свойствах \ launchSettings. json, содержащем:

{
  "profiles": {
    "DebugHost": {
      "commandName": "Executable",
      "executablePath": "my.exe",
      "commandLineArgs": "$(ProjectDir)$(OutDir)$(TargetName)$(TargetExt)"
    }
  }
}

У меня есть три разных вопроса, которые в некоторой степени связаны, так как любой может ответить на другой:

  1. Эта настройка только работает до тех пор, пока у меня открыта консоль диспетчера пакетов. Если я пытаюсь отладить / запустить библиотеку, не открыв сначала консоль диспетчера пакетов, запуск завершится неудачно, поскольку не удается найти исполняемый файл. Unable to start program 'my.exe'. The system cannot fint the file specified.

    Могу ли я, например, добавить в файл Nuget файл целей, который будет указывать его путь во время сборки / запуска, который, в свою очередь, я могу использовать в качестве переменной в launchSettings. json? (Если да, то как?)

  2. Для этой настройки необходимо использовать Properties \ launchSettings. json в потребляющем проекте. Могу ли я сделать так, чтобы мой пакет Nuget создал этот файл?

    Может ли файл быть активом в Nuget, который копируется в нужное место?

    Или у меня даже может быть скрипт install.ps1, который создает json, с правильным абсолютным путем к исполняемому файлу в нем? Это также позволило бы ответить на вопрос 1.

  3. Вышеуказанная ситуация работает только с nuget.exe pack и .nuspe c.

    Могу ли я вместо этого переместить материал в мой (новый стиль) .csproj и заставить его работать только с dotnet.exe pack и .csproj? (или msbuild.exe -t:pack и .csproj?) Итак, в конечном итоге я могу просто создать пакет, просто щелкнув правой кнопкой мыши проект в Visual Studio и выбрав в контекстном меню пункт «Пакет»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...