MSBuild /t: пакет с файлом.nuspec - поддерживает ли он замену токена?
Я пытаюсь выяснить правильное использование генерации пакетов Nuget через MSBuild /t:Pack
это будет использовать файл nuspec, содержащий жетоны доллара.
Что я сделал, это:
- Я определил
<NuspecFile>
в моем файле csproj - Я предоставил базовый файл nuspec
- Я пытался казнить
msbuild /t:Pack /p:Configuration=Release
Он отлично работает и успешно применяет данные, предоставленные в файле nuspec. Теперь, когда я обновляю nuspec с
<version>$version$</version>
Я получаю следующее
C:\Program Files\dotnet\sdk\2.2.103\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(202,5): error : An error occured while trying to parse the value '' of property 'version' in the manifest file. [C:\Users\patryk\source\repos\NuspecTokenReplacement\NuspecTokenReplacement\NuspecTokenReplacement.csproj]
C:\Program Files\dotnet\sdk\2.2.103\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(202,5): error : Value cannot be null or an empty string. [C:\Users\patryk\source\repos\NuspecTokenReplacement\NuspecTokenReplacement\NuspecTokenReplacement.csproj]
C:\Program Files\dotnet\sdk\2.2.103\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(202,5): error : Parameter name: value [C:\Users\patryk\source\repos\NuspecTokenReplacement\NuspecTokenReplacement\NuspecTokenReplacement.csproj]
Изменения доступны в следующем репо: https://github.com/patrykbuzowicz/dotnet-msbuild-pack-nuspectokenreplacement
Мой вопрос: возможно ли использовать токены в файлах.nuspec с подходом msbuild?
Я знаю, что альтернативным подходом было бы просто удалить файл.nuspec и определить метаданные в моем файле.csproj. Этот вопрос сфокусирован на подходе к nuspec.
Дополнительный вопрос: делает msbuild /t:Pack
работать со старыми файлами стиля.csproj, т.е. <Project Sdk="Microsoft.NET.Sdk">
? я собираюсь Invalid target framework for the file ...
ошибка при выполнении msbuild /t:Pack
на таком старом.csproj. И кажется "исправлено" после того, как я вручную добавить <TargetFramework>
к нему (несмотря на наличие <TargetFrameworkVersion>
) но это не очень хороший способ