web-dev-qa-db-fra.com

Le pack NuGet échoue avec "Impossible de trouver '@ (_ OutputPathItem ->'% (FullPath) ..."

J'essaie mon premier paquet NuGet et j'ai quelques problèmes. J'ai un projet assez simple et un fichier .nuspec très simple:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <description>$description$</description>
  </metadata>
</package>

Lorsque j'exécute le pack NuGet avec cette ligne de commande:

NuGet.exe pack mylibrary.csproj -Verbosity detailed -Properties Configuration=Debug

Je reçois cette erreur:

NuGet.CommandLineException: Unable to find '@(_OutputPathItem->'%(FullPath)mylibrary.dll')'. Make sure the project has been built.
   at NuGet.Commands.ProjectFactory.BuildProject()
   at NuGet.Commands.ProjectFactory.CreateBuilder(String basePath)
   at NuGet.Commands.PackCommand.BuildFromProjectFile(String path)
   at NuGet.Commands.PackCommand.BuildPackage(String path)
   at NuGet.Commands.PackCommand.ExecuteCommand()
   at NuGet.Commands.Command.Execute()
   at NuGet.Program.Main(String[] args)

Les fichiers de sortie se trouvent bien dans le dossier bin\Debug, mais NuGet ne les trouve apparemment pas.

Cela ne se produit apparemment que lorsque ToolsVersion du fichier .csproj est défini sur 3.5 ou inférieur. La définition de ToolsVersion sur 4.0 résout le problème.

Il semble que MSBuild 3.5 renvoie la valeur de propriété non développée lors de l'appel de _project.GetPropertyValue("TargetPath") (ProjectFactory.cs ~ 296), MSBuild 4.0 renvoyant la valeur de propriété développée.

24
Mark

Nous avons eu le même problème. ajouter

-Prop Platform=AnyCPU

à la ligne de commande l'a fait fonctionner pour nous.

55
llewellyn falco

Cela ne se produit apparemment que lorsque ToolsVersion du fichier .csproj est défini sur 3.5 ou inférieur. La définition de ToolsVersion sur 4.0 résout le problème.

J'ai créé un numéro pour l'équipe du projet NuGet ici: https://nuget.codeplex.com/workitem/4012

1
Mark

Cela pourrait également avoir la même erreur si la version de .NET Framework est définie sur 4.0 pour l'Assembly.

0
StingyJack