在使用moles程序集的项目上使用TFS2010进行构建时,如果无法解析引用,则无法解析引用

经过多次游戏后,我设法让TFS能够在除测试项目之外的所有项目上运行构建。它们中有一个痣组件。 我得到的错误是   C: Program Files Microsoft Moles bin Microsoft.Moles.targets(79):   命令“”C: Program Files Microsoft Moles bin moles.exe“   @ “C:构建 2 CV2 DevBranchBuild的 Sources CV.BL.Tests OBJ 发布痣 moles.args””   退出代码-1002。 警告是   C: Windows Microsoft.NET Framework v4.0.30319 Microsoft.Common.targets(1360):   无法解析此引用。   无法找到程序集“CV.DAL.Moles,Version = 1.0.0.0,Culture = neutral,processorArchitecture = MSIL”。   检查以确保磁盘上存在程序集。   如果您的代码需要此引用,则可能会出现编译错误。 CV.DAL是我正在碾压的组件。 我正在使用最新版本的pex和moles。 我也将
CV.DAL.moles
文件检入TFS(不是程序集)。 一切都在我的本地机器上完美地构建。我用来做构建的机器具有完全相同的配置。确切地说,我的意思是一个是32位,另一个是64位:o(严重疏忽)。 有任何想法吗? 这使得pex和痣完全无用,因为它在合并分支时打破了门控签到,这是一个很大的耻辱,因为我投入了相当多的时间。 编辑 哪个molesAssemblies目录? moles的安装文件夹或项目下的目录? 安装文件夹在两台计算机上具有相同的文件和文件大小。     
已邀请:
这可能是两个问题之一 - 我前段时间遇到过这两个问题: (一)您的一个依赖项被标记为32位。这可能是cv.dal.dll或其任何依赖项。 Moles.exe必须加载程序集才能执行 - 不确定为什么它不使用Load.RefrectionOnly - 并且由于moles.exe是ILONLY,它在64位计算机上执行为64位进程。这使得鼹鼠生成失败。 解决方法是将moles.exe设置为仅32位:   corflags moles.exe / Force / 32BIT + (二)如果你使用并行构建(例如在你的.msbuild文件中你有选项BuildInParallel =“true”,或者你用选项/ m运行msbuild.exe)你在你的单元测试项目的PreBuildEvent中创建了痣,那么你将运行陷入msbuild目标的问题。 PreBuildEvent在引用被解析之前执行,并且在解析引用时检查跨项目依赖性,因此在依赖项目完成构建之前,PreBuildEvent可能会开始执行。 没有好的解决方法。您可以使用非并行构建(这将使您的构建更慢),也可以将预先生成的* .moles.dll签入源代码控制(每次触摸moled程序集时都必须维护和更新)。     
旧版本的Moles曾经存在类似的问题。将disableCache =“true”添加到.moles文件中修复了这些问题: http://social.msdn.microsoft.com/Forums/en-US/pex/thread/a6d9a67b-0813-4392-a5dd-bea6eb479eea     

要回复问题请先登录注册