Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
Visual studio 2012 vs 2012:世界杯_Visual Studio 2012_Shim_Microsoft Fakes - Fatal编程技术网

Visual studio 2012 vs 2012:世界杯

Visual studio 2012 vs 2012:世界杯,visual-studio-2012,shim,microsoft-fakes,Visual Studio 2012,Shim,Microsoft Fakes,我正试图在VS 2012 ultimate中制作一个垫片,如MSDN站点中所述: [TestClass] 公共类TestClass1 { [测试方法] 公共无效测试当前年份() { int fixed year=2000; 使用(ShimsContext.Create()) { //安排: //迂回日期时间。现在返回固定日期: System.Fakes.ShimDateTime.NowGet= () => {返回新的日期时间(fixedYear,1,1);}; //实例化正在测试的组件: va

我正试图在VS 2012 ultimate中制作一个垫片,如MSDN站点中所述:

[TestClass]
公共类TestClass1
{ 
[测试方法]
公共无效测试当前年份()
{
int fixed year=2000;
使用(ShimsContext.Create())
{
//安排:
//迂回日期时间。现在返回固定日期:
System.Fakes.ShimDateTime.NowGet=
() =>
{返回新的日期时间(fixedYear,1,1);};
//实例化正在测试的组件:
var componentUnderTest=新的MyComponent();
//行为:
int year=componentUnderTest.GetTheCurrentYear();
//断言:
//如果组件正在工作,则始终如此:
断言。等于(固定年份,年份);
}
}
}

但当我编译我的测试项目时,我在输出中得到了一个概念:

警告:无法生成某些赝品。有关完整的详细信息,请将此文件中Fakes元素的诊断属性设置为“true”,然后重新生成项目


如何解决此警告?

我已经单独解决了

在Property中是.NETFramework 4.0


更改为4.5解决问题。

Visual Studio 2012更新1改进了Fakes中的代码生成,以简化代码生成问题的疑难解答。每当无法为特定类型生成存根或垫片时,Fakes现在可以生成一条警告消息—您可以在Visual Studio的错误列表窗口中看到这一点

但是,为了防止大型程序集(如系统)的警告数量过多,Fakes在默认情况下会生成一个警告。通过将.Fakes文件中的
Fakes
XML元素的
Diagnostic
属性设置为“true”或“1”并重建项目,可以查看警告消息的完整列表。(有关示例,请参见下面的第一行代码。)

要解决此警告,请更改.Fakes文件以仅生成测试中所需的存根和垫片。细节 可用选项的完整列表

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration Disable="true" />
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.DateTime!"/>
  </ShimGeneration>
</Fakes>

尝试删除那些.Fakes文件。 我无意中删除了它们并进行了编译,警告也消失了。
我不确定影响是什么,但一切似乎都很顺利。我认为这会导致编译器重新编译伪造文件,只要有一个版本。

在哪篇MSDN文章中描述过?我们这里没有足够的信息来猜测答案。现在回滚您-1在单元测试项目中更改目标.NET framework版本时,可以减少遇到Fakes不支持的类型的机会,但它不会直接消除此警告消息。请解释一下“属性中的.NET framework 4.0”是什么意思?项目属性。我用的是.NET4.0。但是4.5needed@OlegSych答案应在此处标记为正确答案-他的回答比当前标记为答案的内容更与问题相关。是否有方法抑制警告消息?我将Diagnostic设置为false,将Verbosity设置为critical,但仍收到一些警告,表示无法生成某些赝品。是的。使用本答案中描述的方法仅生成所需的存根和垫片类型。不要指定不能被存根或填充的类型。嗨!我在尝试仅添加特定垫片或短棒时遇到一些问题,visual studio中的重建/清理选项不会删除预编译的Fakes程序集,因此,如果有人在执行此操作时遇到问题,请记住手动删除文件夹FakesAssembly。是否有任何方法可以抑制diagnostic=false时生成的“单一警告”。列出需要或将要删除的项目是不可行的。难道我们不能禁止所有关于伪造的警告吗?如果你删除了.fakes文件,你就不能进行伪造了。这将完全违背目的。