相关疑难解决方法(0)

引用COM对象ActiveDs或MSXML2时有很多构建警告

将项目从.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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

警告消息看起来像

C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets:警告:运行时封送程序无法对"ITypeLib.RemoteGetLibAttr"的至少一个参数进行封送处理.因此,这些参数将作为指针传递,并且可能需要操作不安全的代码.

观察:

  • 发生ActiveDs(11个警告)和MSXML2(54个警告).
  • 没有看到我们自己的COM对象.
  • <Reference> .csproj文件中的条目包含属性 WrapperTool = "tlbimp"
  • 尽管有所有警告,但在运行系统中没有发现任何问题.

知道怎么摆脱警告吗?

.net msbuild com-interop tlbimp

12
推荐指数
2
解决办法
7541
查看次数

标签 统计

.net ×1

com-interop ×1

msbuild ×1

tlbimp ×1