我正在申请使用SHIMS。
所以你知道它会发出警告,例如"警告20无法生成一些假货。有关完整的详细信息,请将此文件中Fakes元素的Diagnostic属性设置为' true'并重建项目。"
正如警告中所述,我试图将Diagnostic标志设置为true。
按照规定,我得到了所有警告清单。
警告的数量是1933年来自" mscorlib.fakes"文件。
所以为了解决这个问题,我只是看看以下所有链接,看看它。
http://msdn.microsoft.com/en-us/library/hh708916.aspx#bkmk_type_filtering
Suppressing Microsoft Fakes warnings
和其他东西。
但我仍然无法弄清楚如何解决所有这些警告。
我也想知道有没有办法抑制这个警告。
那么如何以正确的方式删除所有这些警告?有没有其他办法可以抑制所有这些警告?
每当我添加
时<ShimGeneration>
<Clear/>
// other tags like add and etc..
<ShimGeneration/>
我在项目中遇到很多错误,比如你缺少装配参考和其他错误。
那么清除所有这些警告的方法是什么,以及如何取消所有这些警告?
答案 0 :(得分:10)
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<StubGeneration>
<Clear />
</StubGeneration>
<ShimGeneration>
<Clear />
<!-- Add or remove library or class -->
</ShimGeneration>
</Fakes>
答案 1 :(得分:10)
当它产生一些额外警告时有两种解决方法,例如
Cannot generate shim for System.Diagnostics.ProcessPriorityClass: type is an enum.
你可能不喜欢,你可以通过不为fakes文件中的那些类型生成Shims来消除这些警告。类似的东西:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
<Assembly Name="System" Version="4.0.0.0"/>
<StubGeneration>
<Clear/>
</StubGeneration>
<ShimGeneration>
<Clear/>
<Add FullName="System.Diagnostics.Process"/>
<Remove FullName="System.Diagnostics.ProcessPriorityClass"/>
<Remove FullName="System.Diagnostics.ProcessWindowStyle"/>
</ShimGeneration>
</Fakes>
然而,通过并删除每个有警告的类都会非常耗时,尤其是对于较大的BCL。
第二种方法,在我看来更好,就是使用'!'进行类型过滤并且只指定您有兴趣生成的类。 MSDN上给出的示例似乎表明类型过滤只能用于限制命名空间属性,但也可以与fullname属性一起使用,如下例所示:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
<Assembly Name="System" Version="4.0.0.0"/>
<StubGeneration>
<Clear/>
</StubGeneration>
<ShimGeneration>
<Clear/>
<Add FullName="System.Diagnostics.Process!"/>
</ShimGeneration>
</Fakes>
此示例仅修改System.Diagnostics.Process类,而不匹配System.Diagnostics.ProcessPriorityClass。
答案 2 :(得分:2)
尝试以下代码
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" />
<!-- user code -->
<StubGeneration>
<Types>
<Clear />
<Add AbstractClasses="true"/>
</Types>
</StubGeneration>
<!-- /user code -->
</Fakes>
答案 3 :(得分:2)
最后使用了所有.fakes文件。
再次使用以下链接。
http://msdn.microsoft.com/en-us/library/hh708916.aspx#bkmk_type_filtering
在上面指定的链接中,只是指定了如何处理存根生成而不是使用垫片生成。
我认为应该在那里给出完整的例子。
因此,为了删除上述链接中指定的所有警告,我只添加了所需的存根生成并删除了不必要的生成。
示例如下
<StubGeneration>
</Clear>
<Add Namespace="System!">
// Other code
</StubGeneration>
<ShimGeneration>
<Remove Namespace="System" TypeName="example"/>
</ShimGeneration>
有多种方法可以删除所有不需要的存根和填充程序,您可以直接删除整个类或删除该类的部分部分。
因此,为了解决所有警告,你必须经历这一点。