4

以为我会尝试充分利用我的 visualstudio.com 试用会员资格。我用几个项目创建了一个解决方案,将其推送到 Microsoft git 源代码控制提供程序,配置了构建定义并尝试在项目服务器上构建它。但是它一直没有告诉我:

找不到类型或命名空间名称“Moq”(您是否缺少 using 指令或程序集引用?)

我知道这意味着构建服务器找不到 Moq.dll 库。我使用 NuGet 安装了它,但配置了我的 .gitignore 以使包文件夹不受源代码控制。我还为解决方案启用了 NuGet 包还原,并推送了 nuget.exe、nuget.targets 和 nuget.config(.nuget 文件夹中的所有 3 个文件)以及所有其他项目文件。

现在我确信如果我也推送包文件夹,我可以让构建工作,但我想让 nuget 包文件夹不受源代码控制。所以我想知道,这可能吗?visualstudio.com 文档说构建服务器安装了 Visual Studio 2013,因此我认为 nuget 包还原可以下载丢失的 dll,以便 MSBuild 可以解决它们。这是正确的吗?或者要在 visualstudio.com 上使用自动化 CI 构建,您是否需要将包置于源代码控制之下?

根据日志文件,nuget package restore 下载了包。是什么赋予了?

项目“C:\a\src\MySln.sln”(1)正在节点 1 上构建“C:\a\src\Tests\MySln.ProjA.UnitTests\MySln.ProjA.UnitTests.csproj”(3)(默认目标)。RestorePackages:
"C:\a\src.nuget\NuGet.exe" 安装 "C:\a\src\Tests\MySln.ProjA.UnitTests\packages.config" -source "" -NonInteractive -RequireConsent -solutionDir "C: \a\src\ " 正在恢复 NuGet 包...要防止 NuGet 在构建期间下载包,请打开 Visual Studio 选项对话框,单击包管理器节点并取消选中“允许 NuGet 下载丢失的包”。
packages.config 中列出的所有软件包都已安装。PrepareForBuild:创建目录“obj\Debug\”。ResolveAssemblyReferences:主要参考“起订量”。C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(1635,5):警告 MSB3245:无法解析此引用。找不到程序集“Moq”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,您可能会遇到编译错误。[C:\a\src\Tests\MySln.ProjA.UnitTests\MySln.ProjA.UnitTests.csproj]

这一行也在构建日志文件中,在上面的下面:

考虑“..\packages\Moq.4.1.1311.0615\lib\net40\Moq.dll”,但它不存在。

4

2 回答 2

3

我有同样的错误,但它发生在我们的构建服务器上。我通过 NuGet 添加了 Moq,签入了项目,一切都很好。然后我将项目移动到 TFS 中的一个新文件夹中,构建服务器似乎无法找到最小起订量。它在当地建设得很好。我最终通过确保将所有更改都签入源代码控制然后删除我的本地源代码目录来解决问题。我得到了最新的,我的测试项目意识到它需要一个新的起订量副本。我责怪 TFS/源代码安全或 Visual Studio 集成模块在某个时间点没有将其添加到源代码控制中。

于 2014-06-17T18:12:37.377 回答
2

这个是我自己想出来的。原来我在将测试项目移动到 Tests 子文件夹之前添加了 nuget 包。该解决方案仍然建立在我的 LM 上,可能是因为依赖项已经复制到 bin/Debug。重新安装 nuget 包后,解决方案建立在 vs.com 上。

于 2013-11-28T16:29:25.747 回答