【问题标题】:"Error MSB4057 missing target pack" when building .netstandard nuget package构建 .netstandard nuget 包时出现“错误 MSB4057 缺少目标包”
【发布时间】:2024-01-17 16:27:02
【问题描述】:

我正在尝试使用 VS2017 RC 在these instructions 之后创建一个 .netstandard nuget 包。它构建得很好,但是当我尝试使用

创建包时
msbuild /t:pack /p:Configuration=Release

我收到一个错误,目标 pack 在我的解决方案中不可用:

错误 MSB4057:项目中不存在目标“包”。

我不确定如何处理此消息或我应该在哪里修复它。有什么建议吗?

【问题讨论】:

    标签: msbuild nuget visual-studio-2017 .net-standard


    【解决方案1】:

    感谢MSDN forums 上的回答,我才得以正常工作。

    您必须在构建命令中指定您的 .csproj,这样它就不会尝试使用解决方案文件 (.sln)。

    msbuild "C:\Users\Administrator\Documents\visual studio 2017\Projects\AppLogger\AppLogger\AppLogger.csproj" /t:pack /p:Configuration=Release

    此外,我必须从 NuGet 安装 NuGet.Build.Tasks.Pack" 包。

    【讨论】:

    • .csproj 参数不是必需的,如果项目文件夹中不存在 .sln。但是 NuGet.Build.Tasks.Pack 可以解决问题。
    • 对我来说,只需在构建命令中指定 .csproj 文件就可以了。
    【解决方案2】:

    msbuild /t:pack /p:Configuration=Release 命令指定 MSBuild 应在构建脚本中运行 pack 目标。该错误表明 MSBuild 无法在构建脚本(或其导入之一)中找到该目标。您是否仔细检查了您的先决条件?您要么使用了错误的构建脚本,要么缺少 <import> 标签。

    【讨论】:

      【解决方案3】:

      您必须先导入目标,然后才能使用它们。在项目文件中使用targets前写:

        <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
      

      【讨论】: