プロジェクトを .NET 1.1 から .NET 2.0 に移動した後、MsBuild は一部の COM オブジェクトに対して多くの警告を発します。
テスト用のサンプル コード (実際のコードは重要ではありません。警告を作成するために使用されるだけです):
using System;
using System.DirectoryServices;
using ActiveDs;
namespace Test
{
public class Class1
{
public static void Main(string[] args)
{
string adsPath = String.Format("WinNT://{0}/{1}", args[0], args[1]);
DirectoryEntry localuser = new DirectoryEntry(adsPath);
IADsUser pUser = (IADsUser) localuser.NativeObject;
Console.WriteLine("User = {0}", pUser.ADsPath);
}
}
}
警告メッセージは次のようになります
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets: 警告: 'ITypeLib.RemoteGetLibAttr' の少なくとも 1 つの引数をランタイム マーシャラーでマーシャリングできません。したがって、このような引数はポインターとして渡され、操作には安全でないコードが必要になる場合があります。
所見:
- ActiveDs (11 個の警告) および MSXML2 (54 個の警告) で発生します。
- 独自の COM オブジェクトでは見られません。
<Reference>
.csproj ファイルのエントリに属性が含まれていますWrapperTool = "tlbimp"
- すべての警告にもかかわらず、実行中のシステムで問題は観察されていません。
警告を取り除く方法はありますか?