2009-07-20 61 views
4

我们使用Windows COM +服务类型库(位于C:\ Windows \ system32 \ COMSVCS.dll)来跟踪远程的COM +进程机器使用C#3.0/.NET 3.5编写的服务。 ,我遇到的问题是,我正在从编译器,它看起来像下面的警告的整体转换:如何在.NET项目中使用COM引用禁止编译器警告

至少的论据 “IGetAppData.GetApps”一个不能被 通过封运行时封送拆分器。 因此这样的参数将作为指针传递,因此可能需要 不安全的代码来操作。

用于上述方法所生成的互操作功能的签名是:

void IGetAppData.GetApps(out uint nApps, IntPtr aAppData) 

由于输出已经被手动编组调用代码(即,使用Marshall.ReadInt32Marshall.PtrToStructure),有一种方法,以抑制这些类型的警告?

+0

可能的复制http://stackoverflow.com/questions/269063/lots-of-build-warnings-when-com-objects -activeds-or-msxml2-are-referenced/1402834#1402834 – 2016-07-06 20:10:19

回答

2

因为该警告没有数字,所以您不能使用#pragma压制它,但可以使用tlbimp在Visual Studio外导入dll,并使用生成的引用而不是让Visual Studio创建它。

-1

如果您只想隐藏显示的警告,则可以使用#pragma warning指令。这使您可以选择性地启用/禁用特定的警告。

+2

我没有警告ID可以玩 – jpoh 2009-07-20 08:35:46

0

我能够通过指向Interop.xxxx.dll而不是主dll来解决此问题。在我的情况下使用Interop.TaskScheduler.dll工作,而taskschd.dll给我的警告。我使用Rebuild All进行了验证,警告消失了。

+1

我认为这是因为转换到interop已经发生,所以没有更多的警告。有一些方法可以告诉你如何直接使用tlbimp自己构建这些interop,效果相同。 – 2012-09-17 22:42:55

4

添加此行第一个属性组项目文件:的

<ResolveComReferenceSilent>True</ResolveComReferenceSilent> 
+0

谢谢!这工作像一个魅力,以消除这些烦人的警告。 – 2016-08-31 17:22:27