отредактируйте projectFile.csproj после установки пакета nuget

Я создаю пакет для nuget и хочу отредактировать файл project.csproj и заменить некоторые коды в процессе установки пакета.

Можно ли это сделать с помощью файла nuspec?

Или вы должны использовать сценарий PowerShell? Если можно приведите пример с PowerShell


person Community    schedule 14.11.2019    source источник
comment
Вопрос сбивает с толку. Вы создаете пакет NuGet, но устанавливаете его, а затем хотите отредактировать упакованную версию после ее установки?   -  person canton7    schedule 14.11.2019
comment
нет, я хочу установить свой пакет nuget в проект wpf или любой другой проект, а затем после установки пакета я хочу отредактировать файл csproj этого проекта wpf   -  person    schedule 14.11.2019
comment
Более подробная информация о том, что именно вы пытаетесь изменить в .csproj, может помочь найти лучшее решение.   -  person Barry O'Kane    schedule 14.11.2019
comment
Ну, учитывая, что проект уже скомпилирован, изменение csproj — это скорее закрытие двери конюшни после того, как лошадь убежала, не так ли?   -  person canton7    schedule 14.11.2019
comment
Я думаю, вы имеете в виду, что в процессе установки вашего пакета вы хотите отредактировать .csproj, в который устанавливается ваш пакет. Это можно сделать с помощью Powershell, но сценарии установки устарели и не будут работать, если кто-то использует PackageReference (см.: docs.microsoft.com/en-us/nuget/consume-packages/ ). Тем не менее, я не знаю, что вы должны делать в качестве замены.   -  person howcheng    schedule 15.11.2019


Ответы (1)


Вы ищете Расширяемость реквизитов/целей MSBuild.

Какие бы изменения вы ни хотели внести в файл проекта, вы помещаете его либо в файл реквизита, либо в файл целей (реквизиты импортируются до оценки csproj, а цели — после). Вам нужно использовать правильное соглашение об именах, но NuGet 5.3 (включенный в .NET Core SDK 3.0, если вы используете dotnet pack) теперь содержит предупреждение, если вы не поняли его правильно. Затем, когда проект использует ваш пакет, NuGet приказывает остальной системе сборки импортировать файл props/targets вашего пакета.

person zivkan    schedule 16.11.2019
comment
Эта документация относится к старому формату использования файла nuspec. Как это сделать с более новыми проектами, в которых метаданные Nuget определены в файле proj? - person gregsdennis; 03.05.2021
comment
Наши документы по включению контента в пакет объясняет это. По сути, в ItemGroup вы можете сделать что-то вроде <None Include="MyPackage.props" Pack="true" PackagePath="build/net5.0" /> - person zivkan; 05.05.2021