install.ps1
точно не рекомендуется, но это особенность, уникальная для packages.config
.PackageReference
не имеет концепции установки, так как любой может просто отредактировать csproj
и добавить PackageReference.Когда вы восстанавливаете, NuGet не может узнать, происходит ли это в первый раз, когда пакет восстанавливается для проекта после добавления ссылки, или это первый раз, когда проект восстанавливается с чистым репозиторием (после «msbuild /»).t: clean "или" git clone ", например).
Я не знаю альтернативы для создания папок, кроме наличия документации, в которой говорится, что соглашение заключается в использовании этого имени папки.Но альтернативой модификации csproj является использование того факта, что MSBuild является универсальной системой сборки, а пакеты NuGet могут включать в себя MSBuild props и файл назначения .
В вашем конкретном случаеЯ хотел бы создать файл props, который определяет свойство, например, <RemiBouCosmosDBMigrationPath>CosmosDB\Migrations\</RemiBouCosmosDBMigrationPath>
, что позволяет пользователям вашего пакета изменить свойство на другой путь, перезаписывая значение свойства в их csproj, если они предпочитают.
Затем создайтефайл целей, который содержит цель, например,
<Target name="RemiBouCosmosDBMigrationsEmbedMigrations" BeforeTargets="???">
<ItemGroup>
<EmbeddedResource Include="$(RemiBouCosmosDBMigrationPath)**\*.js" />
</ItemGroup>
</Target>
Вам необходимо выяснить, какое имя цели лучше всего добавить в атрибут BeforeTargets, но я надеюсь, что вы понимаете эту идею.Файл csproj
- это не более чем файл MSBuild с определенными соглашениями.Файлы MSBuild могут импортировать другие файлы MSBuild, а MSBuild и NuGet работают вместе, чтобы позволить MSBuild импортировать файлы MSBuild, полученные из восстановленных пакетов.Просто составьте свойства и элементы MSBuild по-другому, и конечный результат может быть тем же.