小编heg*_*ege的帖子

VS2012项目包含Fakes组件定义始终重建

最初我们在复杂的解决方案中发现了这个问题,但现在我也可以在虚拟项目中重现它.

如果我在VS2012 premium(更新4)中创建项目并为其中一个引用添加Fakes程序集,那么无论是否有任何更改,项目似乎都会重建.即我构建项目然后再次单击构建按钮将导致重建项目.

打开诊断构建信息,似乎问题的根本原因是编译.fakes文件的工具正在触摸.Fakes.dll文件,因此VS认为某些内容已更改:

1>Using "Touch" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Touch" (TaskId:11)
1>  Task Parameter:
1>      Files=
1>          D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\mscorlib.4.0.0.0.Fakes.dll
1>          D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\System.4.0.0.0.Fakes.dll
1>          D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\mscorlib.4.0.0.0.Fakes.fakesconfig
1>          D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\System.4.0.0.0.Fakes.fakesconfig (TaskId:11)
1>  Touching "D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\mscorlib.4.0.0.0.Fakes.dll". (TaskId:11)
1>  Touching "D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\System.4.0.0.0.Fakes.dll". (TaskId:11)
1>  Touching "D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\mscorlib.4.0.0.0.Fakes.fakesconfig". (TaskId:11)
1>  Touching "D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\System.4.0.0.0.Fakes.fakesconfig". (TaskId:11)
1>Done executing task "Touch". (TaskId:11)

[...]

1>Input file "D:\work\Ch24_2014_PreEC\UnitTestProject1\FakesAssemblies\System.4.0.0.0.Fakes.dll" is newer than output file "obj\Debug\UnitTestProject1.pdb".
Run Code Online (Sandbox Code Playgroud)

请告诉我我做错了什么以及如何解决这个问题,以便项目不会一直冗余地重建.

提前致谢

编辑

为了澄清,以下是重现问题的步骤:

  1. 创建您选择的C#项目(我已经尝试过单元测试和控制台应用程序)
  2. 在其中一个引用的程序集上添加一个Fakes Assembly(我在上面的示例中使用了System)
  3. 建立项目
  4. 再次构建(不重建)

请注意,您不必向解决方案添加单行代码.

c# microsoft-fakes visual-studio-2012

13
推荐指数
1
解决办法
1603
查看次数

标签 统计

c# ×1

microsoft-fakes ×1

visual-studio-2012 ×1