2009-07-20 34 views
4

リモートでCOM +プロセスを追跡するために、Windows COM +サービスタイプライブラリ(C:\ Windows \ system32 \ COMSVCS.dll)を使用しています。 C#3.0/.NET 3.5で書かれているサービスを使用しています。私が遭遇しています問題は、私は次のようになり、コンパイラから警告の全体のスルーを取得していますということです。.NETプロジェクトでのCOM参照の使用によるコンパイラの警告を抑制する方法

「IGetAppData.GetApps」の引数の

少なくとも一方がで マーシャリングすることはできません

ランタイムマーシャラ。 このような引数は、ポインタとして渡された であり、安全でないコードを操作するには が必要になることがあります。 ( Marshall.ReadInt32Marshall.PtrToStructureを使用してIE)

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

出力は既に呼び出しコードに手動で整列されているように方法がある:

上記の方法のために生成された相互運用機能の署名でありますこれらのタイプの警告を抑制しますか?

+0

http://stackoverflow.com/questions/269063/lots-of-build-warnings-when-com-objectsの可能性の重複を-activeds-or-msxml2-are-referenced/1402834#1402834 –

答えて

2

#pragmaを使用して警告を表示することはできませんが、tlbimpを使用してVisual Studioの外部にdllをインポートし、Visual Studioで作成する代わりに生成された参照を使用できます。

-1

警告が表示されないようにしたい場合は、#pragma warningディレクティブを使用できます。これにより、特定の警告を選択的に有効/無効にすることができます。

+2

残念ながら再生する警告IDがありません – jpoh

1

大幅に改善されたカスタマイズ可能なType Library Importer in Managed Codeを使用してメソッドシグネチャをカスタマイズできます。プロジェクトの元のCOMライブラリの代わりにこのラッパーを参照します。

0

これを解決するには、メインDLLではなくInterop.xxxx.dllへの参照を指定します。私の場合は、Interop.TaskScheduler.dllを使用するのに対し、taskschd.dllは警告を表示します。私はRebuild Allを使って確認し、警告は消えました。

+1

これはinteropへの変換が既に行われているためだと思いますので、これ以上の警告はありません。そこには、tlbimpを直接使用して同じような効果を得て、自分でこれらのインターネットを構築する方法を示す方法があります。 –

4

プロジェクトファイルの最初のプロパティグループで、この行を追加します。

<ResolveComReferenceSilent>True</ResolveComReferenceSilent> 
+0

ありがとう!これは、迷惑な警告を取り除くための魅力のように機能しました。 –

関連する問題