2012-01-05 34 views
4

我们在解决方案中使用moles 0.94进行某些测试。然而,每次被先编译时间,构建服务器将引发一些警告:无法解析构建服务器上的Moles dll的警告

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开始构建这个测试项目时,将会生成痣组件并将其复制到moleassemblies文件夹中,因此它不会变成错误。

总之,这是第一次构建会部分成功,下一次构建将完全成功。

我们试图在构建服务器上不会有任何警告。有没有什么办法可以消除构建服务器上的这种警告?

回答

3

我们已将所有第三方程序集存储在项目根文件夹中的“装配”文件夹中。我们任何项目中使用的所有第三方组件均从此位置引用。 Assemblies文件夹包含在TFS中。

看起来好像你是从输出文件夹而不是一些常见的(Assemblies)文件夹引用XXX.Moles程序集。尝试更新您的引用以使用Assemblies文件夹中的第三方库而不是测试项目的输出文件夹。

编辑:尝试添加检查,如果XXX.Moles装配到存在参考标签如:

<Reference Condition="Exists('..\molesassemblies\XXX.Moles.dll')" Include="XXX.Moles.dll"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\molesassemblies\XXX.Moles.dll</HintPath> 
</Reference> 
+0

我相信geekysteven在谈到自动生成的痣组件,这是在构建过程中创建的,但经过ResolveReferences目标出现在MSBuild中,因此是Build Warning。 – 2012-01-06 03:53:39

+0

尼克是对的,我们不想检入该DLL。痣组件是在构建服务器上自动生成的。这就是为什么生成服务器第一次无法检测到DLL,所以它会丢失警告,但不会出现错误。 – geekysteven 2012-01-06 10:02:18

+0

我更新了我的答案 – Ludwo 2012-01-07 13:27:02

相关问题