【问题标题】:TFS Automatic Build : Nuget Pack fail with code(1)TFS 自动构建:Nuget Pack 因代码失败 (1)
【发布时间】:2018-06-26 14:37:18
【问题描述】:

我正在尝试在 TFS 中为 WPF 项目实现自动构建。 自动构建效果很好,但我无法为项目准备 nuget 包。

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

如果我删除 NuGet 包和 NuGet 推送,它可以毫无问题地工作。

这是我通过 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,但它没有改变任何东西。我在我的电脑上运行了这个命令,它成功了。

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

【问题讨论】:

    标签: tfs nuget azure-devops nuget-package


    【解决方案1】:

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

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

    您还必须指定 BuildConfiguration 的值

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

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

    • 打包程序编译 .csproj 文件以进行打包。
    • 您必须为包指定配置(见下文)。
    • 您不必签入 .nuspec 文件。如果您签入,打包程序会尊重其设置并替换 $id$ 和 $描述$。

    指定 .nuspec 文件(例如,**\*.nuspec)以获得更复杂的 项目,例如您需要的多平台场景 在单独的步骤中编译和打包。在这种情况下:

    • 打包程序不编译用于打包的 .csproj 文件。
    • 每个项目只有在签入 .nuspec 文件时才会被打包。
    • 打包程序不会替换 .nuspec 文件中的标记(元素除外,请参阅使用内部版本号来版本包, 以下)。您必须为<id/>
      <description/> 等元素提供值。最常见的方法是硬编码
      .nuspec 文件中的值。

    【讨论】:

    • 由于 nuspec 解决方案目前有效,我不会更改它。但是对于我的下一个包,我一定会尝试这种方法。
    【解决方案2】:

    终于解决了这个问题

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

    之后一切正常(据我所知),除了包图标尚不可见。但那是另一回事了!

    nuspec 的参考在这里https://docs.microsoft.com/en-us/nuget/reference/nuspec

    一个默认的 nuspec 在这里找到 https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      相关资源
      最近更新 更多