发出警告信息
本文关键字:信息 警告 | 更新日期: 2023-09-27 18:12:41
我有一个使用SHIMS的小应用程序。
所以你知道它给出了警告,如"警告20一些假文件无法生成。要获得完整的详细信息,请将此文件中Fakes元素的Diagnostic属性设置为"true"并重新构建项目。"
因此,正如警告中所说,我试图将Diagnostic标志设置为true。
来自"mscorlib"的警告数为1933。假货"文件。
为了解决这个问题,我查看了下面的链接。
http://msdn.microsoft.com/en-us/library/hh708916.aspx bkmk_type_filtering
vs 2012: Shims编译
打压微软虚假警告
http://connect.microsoft.com/VisualStudio/feedback/details/848682/microsoft-fakes-not-creating-properties-in-a-shim-of-a-class-with-auto-generated-properties但我仍然不知道如何解决所有这些警告。
我还想知道是否有办法抑制这个警告。
那么我如何以正确的方式删除所有这些警告呢?还有其他的方法来压制所有这些警告吗?
每当我添加
<ShimGeneration>
<Clear/>
// other tags like add and etc..
<ShimGeneration/>
我在项目中得到很多错误,就像你缺少汇编参考和其他。
那么清除所有这些警告和抑制所有这些警告的方法是什么呢?
有两种方法可以解决当它产生一些额外的警告,例如
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。
<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>
试试下面的代码
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" />
<!-- user code -->
<StubGeneration>
<Types>
<Clear />
<Add AbstractClasses="true"/>
</Types>
</StubGeneration>
<!-- /user code -->
</Fakes>
最后处理了所有。fakes文件。
并再次使用以下链接。
http://msdn.microsoft.com/en-us/library/hh708916.aspx bkmk_type_filtering
在上面指定的链接中,只是指定了如何处理存根生成而不是shim生成。
我认为那边应该给出完整的例子。
因此,为了消除上述链接中指定的所有警告,我只添加了需要的存根生成,并删除了不必要的生成。
示例如下
<StubGeneration>
</Clear>
<Add Namespace="System!">
// Other code
</StubGeneration>
<ShimGeneration>
<Remove Namespace="System" TypeName="example"/>
</ShimGeneration>
有不同的方法可以删除所有不需要的stub和shim,您可以直接删除整个类或删除部分类。
要避开所有警告你必须通过这个