构建服务器无法解析Moles dlls警告

4

我们在解决方案中使用了 moles 0.94 进行一些测试。但是,每次第一次编译时,构建服务器都会发出一些警告:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (1360): Could not resolve this reference. 
Could not locate the assembly "XXX.Moles, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL". 
Check to make sure the assembly exists on disk. 
If this reference is required by your code, you may get compilation errors.

我的理解是,在开始构建之前,构建服务器将尝试解析测试项目的所有引用,如果它无法在molesassembly文件夹下找到moles dll(因为第一次时它是空的),则会生成如上所述的警告。
但是当msbuild开始构建此测试项目时,mole程序集将被生成并复制到moleassemblies文件夹中,因此它不会变成错误。
总之,第一次构建将部分成功,下一次构建将完全成功。
我们正在努力避免在构建服务器上出现任何警告。有没有办法消除构建服务器上的这个警告?
1个回答

3
我们将所有第三方程序集存储在项目根文件夹中的Assemblies文件夹中。我们所有项目中使用的第三方程序集都从该位置引用。Assemblies文件夹包含在TFS中。
看起来您正在从输出文件夹引用XXX.Moles程序集,而不是从某个常见(Assemblies)文件夹引用。请尝试更新您的引用,以便从Assemblies文件夹而不是您的测试项目的输出文件夹中使用第三方库。
编辑:请尝试在Reference标记中添加检查XXX.Moles程序集是否存在,例如:
<Reference Condition="Exists('..\molesassemblies\XXX.Moles.dll')" Include="XXX.Moles.dll">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\molesassemblies\XXX.Moles.dll</HintPath>
</Reference>

我相信geekysteven正在谈论自动生成的Moles程序集,这些程序集是在构建过程中创建的,但是在MSBuild中出现ResolveReferences目标之后,因此会出现构建警告。 - Nick Nieslanik
Nick是正确的,我们不想要将dll文件check-in。Moles程序集是在构建服务器上自动生成的。这就是为什么构建服务器第一次无法检测到dll文件,因此会发出警告而不是错误的原因。 - geekysteven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接