Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Versioning 最小起订量文件版本&;程序集版本不匹配,导致TeamCity出现问题?_Versioning_Moq_Teamcity - Fatal编程技术网

Versioning 最小起订量文件版本&;程序集版本不匹配,导致TeamCity出现问题?

Versioning 最小起订量文件版本&;程序集版本不匹配,导致TeamCity出现问题?,versioning,moq,teamcity,Versioning,Moq,Teamcity,首次将TeamCity 5.0.1设置为运行单元测试,我们看到以下错误: 测试失败。System.IO.FileNotFoundException:无法加载文件或程序集“Moq,版本=3.1.416.3,区域性=中性,PublicKeyToken=69f491c39445e920”或其依赖项之一。系统找不到指定的文件 我们使用的是Moq的3.1.416.3版本,其dll的文件版本为3.1.0.0 项目文件中的引用如下所示: <Reference Include="Moq, Version=

首次将TeamCity 5.0.1设置为运行单元测试,我们看到以下错误:

测试失败。System.IO.FileNotFoundException:无法加载文件或程序集“Moq,版本=3.1.416.3,区域性=中性,PublicKeyToken=69f491c39445e920”或其依赖项之一。系统找不到指定的文件

我们使用的是Moq的3.1.416.3版本,其dll的文件版本为3.1.0.0

项目文件中的引用如下所示:

<Reference Include="Moq, Version=3.1.416.3, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\lib\binaries\thirdparty\Moq.dll</HintPath> </Reference>
Consider app.config remapping of assembly "Moq, Culture=neutral, PublicKeyToken=69f491c39445e920" from Version "4.0.10827.0" [] to Version "4.1.1309.1617" [C:\XXX\packages\Moq.4.1.1309.1617\lib\net40\Moq.dll] to solve conflict and get rid of warning.
假的 ..\..\..\lib\binaries\thirdparty\Moq.dll 我们可以使用ReSharper在Visual Studion中运行单元测试,也可以从nunit GUI(在我们的开发人员机器和相关的构建服务器上)运行单元测试


这是怎么回事?

不是100%的答案,而是解决办法:


您可以删除生成文件中的显式版本号。因为它是由您的项目提供的,并且只用于测试。只需将“最小起订量,版本=3.1.416.3,…”部分更改为“最小起订量”。然后使用提示路径的版本

这可能是由NuGet依赖项引起的。如果重新生成所有项目,则在编译单元测试项目时可能会看到一条无害的警告,如下所示:

<Reference Include="Moq, Version=3.1.416.3, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\lib\binaries\thirdparty\Moq.dll</HintPath> </Reference>
Consider app.config remapping of assembly "Moq, Culture=neutral, PublicKeyToken=69f491c39445e920" from Version "4.0.10827.0" [] to Version "4.1.1309.1617" [C:\XXX\packages\Moq.4.1.1309.1617\lib\net40\Moq.dll] to solve conflict and get rid of warning.
此警告可能不会停止在本地计算机上运行的单元测试,但可能会阻止TeamCity运行它们

通过向单元测试程序集的App.config文件中添加类似的内容,您可以消除警告并使TeamCity运行单元测试

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">   
    <dependentAssembly>
      <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
      <bindingRedirect oldVersion="4.0.10827.0" newVersion="4.1.1309.1617" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>


…当然,使用的版本号与实际安装的版本号有关。

我们也遇到了同样的问题。你有没有弄清楚是什么原因导致了这一切?