如何修复 Azure DevOps 中的"Type or namespace name 'X' does not exist in the namespace 'Y'"错误



我正在使用Azure DevOps,为 ASP.NET Web应用程序构建管道。

导致问题的大多数设置几乎都是默认设置,除了构建解决方案任务中的 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 还原任务指向我的项目中的源。 提要包含MyPackage.problem,MyPackage.problem.blah(其中blah代表几个不同的名称),MyPackage.Other1,MyPackage.Other2,MyPackage.Other3,MyPackage.Other4和其他3个包。 它还从 Nuget.org 那里获得了一些包裹。

一切似乎都很好,直到构建步骤,当我收到错误时

命名空间中不存在类型或命名空间名称"problem" "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"通常存在,但事实上,它在解压缩的存储库文件和结构正确的包中都没有,这让我认为它可能以某种方式相关。

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

nuget spec -AssemblyPath [path to .dll]

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

相关内容

最新更新