MS Fakes 加载程序集仅在 MSBuild 中失败
MS Fakes loading assembly fails only in MSBuild
我有以下设置:
Solution N1 -> .net 3.5, Ninject 2.2
Solution N2 -> .net 4.5.2, Ninject 3.2
我从解决方案 N1 添加了一个项目到解决方案 N2,然后为使用 Ninject 2.2 的项目生成了假货。
在vs中,fakes生成成功。
在 MsBuild(和 TeamBuild)中,我收到以下错误:
C:\Somepath\Fakes\SomeProj.fakes: assembly C:\Somepath\SomeProj.dll failed to load properly Could not resolve assembly 'Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=6b7e450ec5ed63ad'. Are you missing an assembly reference?
所以我的测试无法在构建上运行,即使我为 运行 测试选择了 vs 测试运行器(不是 msbuild)。
不幸的是,由于某些外部原因,我无法在解决方案 N1 中更新 Ninject。
在生产中,该应用程序可以正常工作,因为我已将 Ninject 重新映射到 3.2.0.0 并且它可以正常工作。
知道如何让假货加载 3.2.0.0(不在 SomeProj 中引用)或忽略该代码吗? (我尝试明确指定我需要的存根和垫片,在 MsBuild 中出现同样的错误)。
所以我最后所做的是将旧的 Ninject 添加到 repo,然后在 .fakes
文件中像这样引用它:
<Compilation>
<Reference Path="RelativeToCsProjFolder\Ninject.dll" FullName="Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=6b7e450ec5ed63ad"/>
</Compilation>
让我感兴趣的是这条路径中的相对路径语法。
我有以下设置:
Solution N1 -> .net 3.5, Ninject 2.2
Solution N2 -> .net 4.5.2, Ninject 3.2
我从解决方案 N1 添加了一个项目到解决方案 N2,然后为使用 Ninject 2.2 的项目生成了假货。 在vs中,fakes生成成功。 在 MsBuild(和 TeamBuild)中,我收到以下错误:
C:\Somepath\Fakes\SomeProj.fakes: assembly C:\Somepath\SomeProj.dll failed to load properly Could not resolve assembly 'Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=6b7e450ec5ed63ad'. Are you missing an assembly reference?
所以我的测试无法在构建上运行,即使我为 运行 测试选择了 vs 测试运行器(不是 msbuild)。
不幸的是,由于某些外部原因,我无法在解决方案 N1 中更新 Ninject。 在生产中,该应用程序可以正常工作,因为我已将 Ninject 重新映射到 3.2.0.0 并且它可以正常工作。
知道如何让假货加载 3.2.0.0(不在 SomeProj 中引用)或忽略该代码吗? (我尝试明确指定我需要的存根和垫片,在 MsBuild 中出现同样的错误)。
所以我最后所做的是将旧的 Ninject 添加到 repo,然后在 .fakes
文件中像这样引用它:
<Compilation>
<Reference Path="RelativeToCsProjFolder\Ninject.dll" FullName="Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=6b7e450ec5ed63ad"/>
</Compilation>
让我感兴趣的是这条路径中的相对路径语法。