Saltar al contenido

No incluya dependencias del archivo packages.config al crear el paquete NuGet

Solución:

En la versión 2.7 hay una opción llamada developmentDependency que se puede configurar en package.config para evitar incluir la dependencia.

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="jQuery" version="1.5.2" />
    <package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
    <package id="microsoft-web-helpers" version="1.15" />
</packages>

Evite que su paquete dependa de otros paquetes

A partir de NuGet 2.7, hay un nuevo atributo developmentDependency que se puede agregar a un package nodo en el de su proyecto packages.config expediente. Entonces, si su proyecto incluye un paquete NuGet que no desea que su paquete NuGet incluya como dependencia, puede usar este atributo así:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="CreateNewNuGetPackageFromProjectAfterEachBuild" version="1.8.1-Prerelease1" targetFramework="net45" developmentDependency="true" />
</packages>

Lo importante que debe agregar aquí es developmentDependency="true".

Evite que otros paquetes dependan de su paquete de desarrollo

Si está creando un paquete de desarrollo de NuGet para que otros lo consuman, que sabe que no querrán tener como dependencia en sus paquetes, puede evitar que los usuarios tengan que agregar manualmente ese atributo a su archivo packages.config mediante el uso de NuGet 2.8 developmentDependency atributo en la sección de metadatos de su archivo .nuspec. Esto agregará automáticamente el atributo developmentDependency al archivo packages.config cuando otros instalen su paquete. El problema aquí es que requiere que el usuario tenga al menos NuGet 2.8 instalado. Afortunadamente, podemos hacer uso del atributo minClientVersion de NuGet 2.5 para asegurarnos de que los usuarios tengan al menos la v2.8 instalada; de lo contrario, se les notificará que necesitan actualizar su cliente NuGet antes de poder instalar el paquete.

Tengo un paquete de desarrollo NuGet para el que fue perfecto. Así es como se ve mi archivo .nuspec, que muestra cómo usar los atributos minClientVersion y developmentDependency (líneas 3 y 20 respectivamente):

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata minClientVersion="2.8">
    <id>CreateNewNuGetPackageFromProjectAfterEachBuild</id>
    <version>1.8.1-Prerelease1</version>
    <title>Create New NuGet Package From Project After Each Build</title>
    <authors>Daniel Schroeder,iQmetrix</authors>
    <owners>Daniel Schroeder,iQmetrix</owners>
    <licenseUrl>https://newnugetpackage.codeplex.com/license</licenseUrl>
    <projectUrl>https://newnugetpackage.codeplex.com/wikipage?title=NuGet%20Package%20To%20Create%20A%20NuGet%20Package%20From%20Your%20Project%20After%20Every%20Build</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Automatically creates a NuGet package from your project each time it builds. The NuGet package is placed in the project's output directory.
    If you want to use a .nuspec file, place it in the same directory as the project's project file (e.g. .csproj, .vbproj, .fsproj).
    This adds a PostBuildScripts folder to your project to house the PowerShell script that is called from the project's Post-Build event to create the NuGet package.
    If it does not seem to be working, check the Output window for any errors that may have occurred.</description>
    <summary>Automatically creates a NuGet package from your project each time it builds.</summary>
    <releaseNotes>- Changed to use new NuGet built-in method of marking this package as a developmentDependency (now requires NuGet client 2.8 or higher to download this package).</releaseNotes>
    <copyright>Daniel Schroeder 2013</copyright>
    <tags>Auto Automatic Automatically Build Pack Create New NuGet Package From Project After Each Build On PowerShell Power Shell .nupkg new nuget package NewNuGetPackage New-NuGetPackage</tags>
    <developmentDependency>true</developmentDependency>
  </metadata>
  <files>
    <file src="https://foroayuda.es/..New-NuGetPackage.ps1" target="contentPostBuildScriptsNew-NuGetPackage.ps1" />
    <file src="ContentNuGet.exe" target="contentPostBuildScriptsNuGet.exe" />
    <file src="ContentBuildNewPackage-RanAutomatically.ps1" target="contentPostBuildScriptsBuildNewPackage-RanAutomatically.ps1" />
    <file src="ContentUploadPackage-RunManually.ps1" target="contentPostBuildScriptsUploadPackage-RunManually.ps1" />
    <file src="ContentUploadPackage-RunManually.bat" target="contentPostBuildScriptsUploadPackage-RunManually.bat" />
    <file src="toolsInstall.ps1" target="toolsInstall.ps1" />
    <file src="toolsUninstall.ps1" target="toolsUninstall.ps1" />
  </files>
</package>

Si no desea obligar a sus usuarios a tener al menos NuGet v2.8 instalado antes de que puedan usar su paquete, entonces puede usar la solución que se me ocurrió y sobre la que escribí en el blog antes de que existiera el atributo developmentDependency de NuGet 2.8.

Si está utilizando el PackageReference elemento en lugar de package.config archivo, aquí está la solución:

<PackageReference Include="Nerdbank.GitVersioning" Version="1.5.28-rc" PrivateAssets="All" />

o

<PackageReference Include="Nerdbank.GitVersioning" Version="1.5.28-rc">
   <PrivateAssets>all</PrivateAssets>
</PackageReference>

Discusión relacionada de GitHub

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *