Использование пакета nuget, содержащего файл .targets, через PackageReference - PullRequest
0 голосов
/ 21 марта 2019

У меня есть проект .NET452 - давайте назовем его Consumer.csproj, который я хочу использовать nuget, назовем его SharedTargets, который содержал некоторые файлы пользовательских целей (SharedTargets.targets) из msbuild.

Я использую формат PackageReference и теперь (по сравнению с тем, что было раньше) пакеты nuget восстанавливаются в общую папку (% userprofile% .nuget \ packages), и я не уверен, что это хорошо Идея ссылаться на это через (не кажется правильным).

Например:

<PackageReference Include="SharedTargets">
  <Version>1.0</Version>
</PackageReference>
<Import 
  Project="$(USERPROFILE)\.nuget\packages\SharedTargets\1.0\SharedTargets.targets"
/>

Также это работает только в VS, при запуске из командной строки (msbuild) У меня проблема с куриным яйцом:

Убедитесь, что путь в объявлении <Import> указан правильно, и что файл существует на диске.

Очевидно, так как мне нужно сначала восстановить nuget, прежде чем я смогу его использовать:)

Итак, вопрос:

  • Есть ли более элегантный способ определения пути к пакету nuget внутри файла проекта
  • есть ли способ, как сделать msbuild успешным (т.е. восстановить пакеты до импорта SharedTargets.target)

1 Ответ

1 голос
/ 21 марта 2019

Не следует пытаться вручную импортировать цели, распространяемые через NuGet.

Поместите файл .targets в подпапку build внутри пакета и назовите его SharedTargets.targets (идентификатор пакета + .targets)NuGet автоматически включит цели - для проектов packages.config при установке будет изменен файл проекта, а для проектов PackageReference цели будут импортированы путем изменения неявно сгенерированного файла целей в каталоге obj\.

...