移动后的一个项目。净1.1。网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'不可编组运行时封送拆收器.这种辩论因此将通过为指针,并可能需要的不安全代码操纵。

意见:

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

任何知道怎样摆脱这些警告?

有帮助吗?

解决方案

根据一个评论 MDSN条约TLBIMP为2.0, 你不能解决这个问题w/o运行TLBIMP自己。

很容易再现你的问题采用VS。我也转载它运行TLBIMP手从一个评论VS提示:

   tlbimp c:\WINNT\system32\activeds.tlb /out:interop.activeds.dll

修复使用/无声的开关

   tlbimp c:\WINNT\system32\activeds.tlb /silent /out:interop.activeds.dll

如指出的评论在MSDN文章,COM参考成为一个.净大会参考的互操作会为你建立自己。

我不是一个VS的专家,但是我做了这项工作通过加入一个预生成的项目:

    "$(DevEnvDir)\..\..\SDK\v2.0\bin\tlbimp" c:\WINNT\system32\activeds.tlb
            /namespace:ActiveDs /silent /out:"$(ProjectDir)interop.activeds.dll"

建立这一次,所以我有一个dll添加一个参考的浏览选项。增加一个参考interop.activeds.dll 在我的项目根然后建一次。你可能会想要这么做一些其他办法,如与外部作出文件经C++的项目。这是更多的POC。

注意到一个有趣的差异MSBUILD vs VS,$(DevEnvDir)末尾有反斜杠,但MSBUILD不。

其他提示

我已经经历了同样的问题和固定它通过编辑的项目文件(.csproj),以下建议:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/7a7c352b-20cb-4931-b3b5-27e899016f75/turning-off-msbuild-warnings-msb3305?forum=msbuild

我加入以下关键的业集团的每个建立配置:

<ResolveComReferenceSilent>True</ResolveComReferenceSilent>

你可以停止的警告:

    #pragma warning disable warning-list
    #pragma warning restore warning-list

那里的警告名单是一个逗号分开列的预警数字。

告警装置的类型库你是进口含有的东西不可译成托管的代码,但可能是处理与使用操作指针,在一个安全代码块。代码是不可译。净1.1为好,但编译器没有足够的智慧来警告你的陷阱,你可以走到如果使用的方法之一,这是警告你关于。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top