web-dev-qa-db-fra.com

Vous compilez des projets NuGet en mode publication?

Existe-t-il un moyen de créer un paquet NuGet en utilisant le code compilé en mode publication? Ou y a-t-il une raison pour laquelle je devrais publier (mettre à disposition localement, dans ce cas) des packages compilés en mode débogage?

Chaque fois que j'appelle nuget pack à partir du répertoire de mon projet, où se trouve le fichier nuspec ci-dessous, le code que je n'ai compilé qu'en version, me plaint de ne pas trouver la DLL dans le dossier de débogage ("\bin\Debug\SomeProject.dll"). Si je le compile en mode débogage, ces fichiers sont là et il est emballé comme il se doit.

<?xml version="1.0"?>
<package xmlns="http://schemas.Microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>$id$</id>
        <version>$version$</version>
        <authors>$author$</authors>
        <owners>$author$</owners>
        <iconUrl>http://somewhere/project.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>$description$</description>
    </metadata>
</package>
92
patridge

Vous pouvez le résoudre comme ceci: NuGet.exe pack Foo.csproj -Prop Configuration=Release ( la référence ).

179
Giorgi

Si vous utilisez un événement post-build et que vous souhaitez créer un package, que vous utilisiez la configuration Debug ou Release, vous pouvez configurer la ligne de commande de l'événement post-build de la manière suivante:

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName)
16
EnderWiggin

Pour que NuGet utilise automatiquement le mode de libération lorsque vous exécutez nuget pack, procédez comme suit:

  1. Ouvrez votre fichier .csproj dans un éditeur de texte.
  2. Trouvez la ligne suivante:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. Dans cette ligne, remplacez Debug par Release.
  4. Sauvegarder les modifications.
4
Sam

Les réponses ici sont bonnes, mais cela me posait de nombreux problèmes pour un projet .NET Standard. J'avais un projet qui ne faisait que publier des fichiers binaires Release, mais il ne respectait pas le chemin de sortie par défaut de la construction.

J'ai ajouté ceci à mon CSProj, ce qui m'a ensuite permis d'utiliser la réponse acceptée ici .

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>
0
kayleeFrye_onDeck