【发布时间】:2010-09-21 02:37:09
【问题描述】:
将项目从 .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”的至少一个参数。因此,此类参数将作为指针传递,并且可能需要不安全的代码来操作。
观察:
- 发生在 ActiveD(11 条警告)和 MSXML2(54 条警告)中。
- 我们自己的 COM 对象看不到。
-
<Reference>.csproj 文件中的条目包含属性WrapperTool = "tlbimp" - 尽管有所有警告,但在运行的系统中未发现任何问题。
知道如何摆脱警告吗?
【问题讨论】:
-
你有没有设法解决这个问题?
标签: .net msbuild com-interop tlbimp