TFS自动构建:Nuget Pack失败,代码为(1)

时间:2018-06-26 14:37:18

标签: tfs nuget azure-devops nuget-package

我正在尝试在WFS项目的TFS中实现自动构建。 自动构建的效果很好,但是我不能在项目中准备一个nuget包。

这是我在TFS中的构建过程:

Capture of build process after fail

如果我删除NuGet pack和NuGet push,它将正常工作。

这是我通过TFS收到的消息:

Found packages.config. Using packages listed as dependencies
NuGet.CommandLine.CommandLineException: Unable to find 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Make sure the project has been built.
   at NuGet.CommandLine.ProjectFactory.AddDependencies(Dictionary`2 packagesAndDependencies)
   at NuGet.CommandLine.ProjectFactory.ProcessDependencies(PackageBuilder builder)
   at NuGet.CommandLine.ProjectFactory.CreateBuilder(String basePath, NuGetVersion version, String suffix, Boolean buildIfNeeded, PackageBuilder builder)
   at NuGet.Commands.PackCommandRunner.BuildFromProjectFile(String path)
   at NuGet.CommandLine.PackCommand.ExecuteCommand()
   at NuGet.CommandLine.Command.ExecuteCommandAsync()
   at NuGet.CommandLine.Command.Execute()
   at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args)
Unable to find 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Make sure the project has been built.
##[error]The nuget command failed with exit code(1) and error(Unable to find 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Make sure the project has been built.)

在日志中,它说没有找到“ Extended.Wpf.Toolkit.3.3.0.nupkg”。我在构建之前确实使用了NuGet Restore,并且构建是正确的。在TFS的日志中,我可以看到它使用了'Extended.Wpf.Toolkit.3.3.0'

我已经尝试在NuGet用于打包的命令上添加-Prop Platform=AnyCPU,但没有任何改变。我在计算机上运行了命令,它就起作用了。

以下是我在搜索修复程序时已经检查过的页面:

2 个答案:

答案 0 :(得分:1)

在打包并选择.csproj文件时,您可能缺少配置。

如果您选择$(BuildConfiguration)作为要打包的配置选项。

您还必须指定BuildConfiguration的值

enter image description here

看看使用**\*.csproj**\*.nuspec的区别

  

为简单起见,指定.csproj文件(例如**\*.csproj)   项目。在这种情况下:

     
      
  • 打包程序会编译.csproj文件进行打包。
  •   
  • 您必须指定要打包的配置(请参见下文)。
  •   
  • 您不必检入.nuspec文件。如果您确实签入,则打包程序将接受其设置并替换$ id $和   $ description $。
  •   
     

指定.nuspec文件(例如,**\*.nuspec)以解决更复杂的问题   项目,例如您需要在其中进行的多平台方案   分步编译和打包。在这种情况下:

     
      
  • 打包程序不会编译.csproj文件进行打包。
  •   
  • 每个项目只有在已签入.nuspec文件的情况下才打包。
  •   
  • 打包程序不会替换.nuspec文件中的令牌(该元素除外,请参阅使用内部版本号对程序包进行版本控制,   下面)。您必须为<id/>
    之类的元素提供值   <description/>。最常见的方法是对
    进行硬编码   .nuspec文件中的值。
  •   

答案 1 :(得分:0)

最后我能够解决这个问题

我发现的解决方法是将.nuspec文件添加到我的项目中。我将NuGet pack任务更改为使用nuspec而不是csproj。

在那之后,一切都运行良好(据我所知),但包图标尚不可见。但这是另一个故事!

此处是nuspec的参考https://docs.microsoft.com/en-us/nuget/reference/nuspec

https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package

中找到默认的nuspec