MISE À JOUR:.NET Core .csproj files patching et automatic nuget packaging for .NET Core projects fonctionne maintenant.
Il y a peu d'options:
Effectuer le patch manuellement le fichier .NET standard .csproj
avec PowerShell. Dans cet exemple, nous mettons à jour la version, mais vous pouvez également mettre à jour d'autres paramètres de cette façon.
$xmlPath = "$env:appveyor_build_folder\MyProject\MyProject.csproj"
$xml = [xml](get-content $xmlPath)
$propertyGroup = $xml.Project.PropertyGroup | Where { $_.Version}
$propertyGroup.Version = $env:appveyor_build_version
$xml.Save($xmlPath)
msbuild %appveyor_build_folder%\MyProject\MyProject.csproj /t:pack
ou si vous souhaitez continuer à utiliser le fichier .nuspec
, vous pouvez emballer avec la commande comme ceci:
msbuild %appveyor_build_folder%\MyProject\MyProject.csproj /t:pack /p:Configuration=%CONFIGURATION%;NuspecFile=MyProject\MyProject.nuspec;PackageVersion=%APPVEYOR_BUILD_VERSION%
Bien sûr, vous pouvez utiliser dotnet pack
mais nous pensons que l'avenir msbuild
restera outil principal, donc nous essayons de faire tous les scripts en l'utilisant. Inutile de dire que nous, dans AppVeyor, devons rendre ce script inutile, nous le suivons dans https://github.com/appveyor/ci/issues/1404.
Je ne pense pas que csproj devrait avoir un attribut 'Version'. Selon [this] (https://docs.microsoft.com/en-us/nuget/guides/create-net-standard-packages-vs2017), il devrait s'agir de 'PackageVersion'. –
Selon [this] (https://docs.microsoft.com/en-us/dotnet/core/tools/csproj), pour 'PackageVersion', * default est la valeur de $ (Version), c'est-à-dire de la version de la propriété dans le projet *. Donc, si je comprends bien, 'Version' est toujours valide, mais' PackageVersion' est plus spécifique à l'empaquetage de Nuget. ** Ajout **: Je pense que pour le patch automatique dans AppVeyor, nous devrions proposer des options pour patcher les deux et effectivement patcher ce qui existe vraiment dans '.csproj' – ilyaf