首页 > 解决方案 > 如何修复 Azure Devops 中的“命名空间‘Y’中不存在类型或命名空间名称‘X’”错误

问题描述

我正在使用 ASP.NET Web 应用程序的构建管道在 Azure Devops 中工作。

导致问题的大多数设置几乎都是默认设置,除了构建解决方案任务中的 msbuild 参数、内部版本号、开始时应该只更新版本号的 powershell 脚本、我的命令行任务知道不是原因,因为我在第一次遇到处理其他问题的问题后添加了它,并且有几个命令行任务只是显示 D: 文件夹的内容。

msbuild 参数是:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true 
/p:PackageLocation="$(build.artifactstagingdirectory)\\" 
/p:UseWPP_CopyWebApplication=true /p:OutDir="$(build.artifactstagingdirectory)" 
/p:Version=$(buildNumber)

NuGet 还原任务指向我的 Artifacts 中的一个提要。该提要包含 MyPackage.problem、MyPackage.problem.blah(其中 blah 代表几个不同的名称)、MyPackage.Other1、MyPackage.Other2、MyPackage.Other3、MyPackage.Other4 和 3 个其他包。它还从 Nuget.org 获得了一些包。

一切似乎都正常,直到构建步骤,当我得到错误

命名空间“MyPackage”中不存在类型或命名空间名称“问题”(您是否缺少程序集引用?)

我的第一次故障排除尝试涉及查看问题包的内部,它们与其他包有很大不同:它们在主目录中有一个 .csproj 文件和几个 .cs 文件,还有一些其他包没有的文件夹没有,尽管它们之间的名称和编号不同,并且它们缺少一个 lib 文件夹。其他文件夹似乎都井然有序。

更新:不确定这是否相关,但我又查看了 .nuspec 文件。我比较了在 Azure Devops 中制作的 MyPackage.problem 中的 .nuspec 文件,并将其与我们开始切换到 Azure Devops 之前(以及在我从事该项目之前)的正确结构版本和解压后的 .nuspec 文件进行了比较存储库。它们是相同的,除了在 Azure Devops 中制作的包的第一行具有以下内容:

<?xml version="1.0" encoding="utf-8"?>

而其他人有:

<?xml version="1.0"?>

从我在网上找到的内容来看,“encoding="utf-8"" 通常存在,但它在解压缩的存储库文件和正确结构化的包中都不存在的事实让我认为它可能以某种方式可能相关。

标签: azure-devopsnuget-package

解决方案


我终于设法弄清楚了,或者至少看起来我做到了。问题似乎是我试图使用 Nuget Pack 任务从项目中的 .nuspec 文件创建包,由于缺少全局 .nuspec 文件,导致多个单独的包。我与我的上级交谈,询问在 Azure Devops 之外,这些包是如何正常制作的,他指给我看详细说明如何从 .dll 文件创建包的说明。使用命令行脚本任务,我跑了

nuget spec -AssemblyPath [path to .dll]

然后使用复制文件任务将 .dll 文件(在构建解决方案任务期间创建)从 build.artifactstaging 目录复制到工作目录中的 lib/net40 文件夹。之后,我运行 Nuget 包任务,针对命令行脚本创建的 .nuspec 文件,并且包以正确的结构成功创建,除了包括工作目录中的其他文件夹,但这些没有' 似乎不会妨碍功能,如果需要,排除它们可能相当简单。


推荐阅读