【问题标题】:Warning of could not resolve Moles dlls on Build server警告无法解析构建服务器上的 Moles dll
【发布时间】:2012-02-03 06:45:30
【问题描述】:

我们在解决方案中使用 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 assembly并复制到moleassemblies文件夹中,所以不会报错。

综上,第一次构建会部分成功,下次构建会完全成功。

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

【问题讨论】:

    标签: tfs msbuild moles pex-and-moles


    【解决方案1】:

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

    您似乎是从输出文件夹引用 XXX.Moles 程序集,而不是一些常见的 (Assemblies) 文件夹。尝试更新您的引用以使用 Assemblies 文件夹中的 3rd 方库,而不是测试项目的输出文件夹。

    编辑:尝试添加检查 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 是对的,我们不想签入 dll。 moles 程序集是在构建服务器上自动生成的。这就是为什么构建服务器无法在第一时间检测到 dll,所以它会丢弃警告而不是错误。
    猜你喜欢
    • 2021-11-22
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2016-09-09
    • 2021-11-13
    • 2021-01-03
    相关资源
    最近更新 更多