我想我会尝试充分利用我的visualstudio.com试用会员资格。我创建了一个包含几个项目的解决方案,将其推送到Microsoft git源代码控制提供程序,配置了构建定义并尝试在项目服务器上构建它。然而它一直没告诉我:
无法找到类型或命名空间名称'Moq'(是吗? 缺少using指令或程序集引用?)
我知道这意味着构建服务器找不到Moq.dll库。我使用NuGet安装了它,但配置了我的.gitignore以使packages文件夹不受源代码控制。我还为解决方案启用了NuGet包恢复,并推送了nuget.exe,nuget.targets和nuget.config(.nuget文件夹中的所有3个文件)以及所有其他项目文件。
现在我确信如果我也推送了包文件夹,我可以让构建工作,但我想让nuget包文件夹不受源代码控制。所以我想知道,这是可能? visualstudio.com文档说构建服务器安装了visual studio 2013,因此我假设nuget包恢复可以下载丢失的dll,以便MSBuild可以解析它们。这是正确的吗?或者在visualstudio.com上使用自动CI构建,您是否需要在源代码管理下使用您的软件包?
根据日志文件,nuget包恢复下载了包。是什么给了什么?
项目“C:\ a \ src \ MySln.sln”(1)正在构建 “C:\ A \ SRC \测试\ MySln.ProjA.UnitTests \ MySln.ProjA.UnitTests.csproj” (3)在节点1上(默认目标)。 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下载丢失的包” package.config中列出的所有软件包都已安装。 PrepareForBuild:创建目录“obj \ Debug \”。 ResolveAssemblyReferences:主要参考“Moq”。 C:\ Program Files (86)\的MSBuild \ 12.0 \ BIN \ AMD64 \ Microsoft.Common.CurrentVersion.targets(1635,5): 警告MSB3245:无法解析此引用。找不到 大会“Moq”。检查以确保磁盘上存在程序集。如果 您的代码需要此引用,您可能会得到编译 错误。 [C:\ A \ SRC \测试\ MySln.ProjA.UnitTests \ MySln.ProjA.UnitTests.csproj]
此行也位于构建日志文件中,位于上面:
考虑“.. \ packages \ Moq.4.1.1311.0615 \ lib \ net40 \ Moq.dll”,但它不存在。
答案 0 :(得分:3)
我有同样的错误,但它发生在我们的构建服务器上。我通过NuGet添加了Moq,在项目中检查了一切都很好。然后我将项目移动到TFS中的新文件夹中,构建服务器似乎无法找到Moq。它在当地建设很好。我最后通过确保将所有更改都检入源代码控制然后删除本地源代码目录来解决问题。我得到了最新消息,我的测试项目意识到它需要Moq的新副本。我责怪TFS / source safe或者Visual Studio集成模块在某个时间点没有将它添加到源代码控制中。
答案 1 :(得分:2)
我自己想出这个。结果我在将测试项目移动到Tests子文件夹之前添加了nuget包。解决方案仍然建立在我的LM上,可能是因为依赖关系已经复制到bin / Debug。重新安装nuget软件包后,解决方案建立在vs.com上。