Использовать ссылку проекта вместо пакета nuget при разработке? - PullRequest
0 голосов
/ 07 ноября 2019

у нас есть проект A (csproj, netstandard2.0), который мы хотели бы выпустить в виде пакета nuget.

Мы хотим использовать этот пакет в проекте B, используя (csproj, .net framework 4.7.2) для ускорения сборок на нашем сервере сборки. Потому что нам не нужно собирать проект A перед сборкой проекта B.

Однако, чтобы упростить разработку, я хотел бы иметь решение, включающее оба проекта, чтобы я мог редактировать исходный код проекта A и (повторно скомпилируйте так, чтобы проект B использовал последнюю версию проекта A ( без необходимость упаковать новый nupkg проекта A (и опубликовать его на нашем исходном сервере пакетов nuget, если это возможно)). (Хотя по-прежнему используется nuget на нашем сервере сборки)

Как это можно архивировать?

Я искал в Интернете и stackoverflow, но не смог найти способ, как это должно работать.

Спасибо

1 Ответ

1 голос
/ 08 ноября 2019

Как говорит @Zivkan, это несколько странно делать по ряду причин, но если вы хотите попробовать это, я думаю, что сработает следующее:

Вы можете использовать условное выражениев вашем проекте, чтобы при сборке локально использовалась ссылка на проект, но при сборке на сборочном компьютере вы задали свойство в командной строке, чтобы использовать вместо него ссылку на пакет.
например

<Choose>
  <When Condition="'$(IsBuildServer)' == 'true'">
    <ItemGroup>
      <PackageReference Include="A" Version="*" />
    </ItemGroup>
  </When>
  <Otherwise>
    <ItemGroup>
      <ProjectReference Include="relativepath\A.csproj" />
    </ItemGroup>
  </Otherwise>
</Choose>

И затем, при сборке на сервере сборки, просто убедитесь, что в качестве аргумента командной строки для сборки msbuild / dotnet указана -p:IsBuildServer=true.

"*" в ссылке на пакет просто означает, что он использует последний доступный стабильный пакет, но может не соответствовать желаемому, в зависимости от того, что именно вы хотите, чтобы сервер сборки собирался.

...