将项目从 .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"
- 尽管有所有警告,但在运行的系统中没有观察到任何问题。
知道如何摆脱警告吗?
我遇到了同样的问题,并按照此处的建议通过编辑项目文件(.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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)