Po przeniesieniu projektu z .NET 1.1 do .NET 2.0, MsBuild emituje wiele ostrzeżeń dla niektórych obiektów COM.Wiele ostrzeżeń dotyczących budowania, gdy obiekty COM ActiveDs lub MSXML2 są przywoływane
Przykładowy kod dla testu (rzeczywisty kod nie ma znaczenia, po prostu wykorzystywane do tworzenia ostrzeżenia):
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);
}
}
}
Komunikaty ostrzegawcze wyglądać
C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Microsoft.Common.targets: warning: co najmniej jeden z argumentów dla "ITypeLib.RemoteGetLibAttr" nie może zostać zebrany przez agenta środowiska wykonawczego. Takie argumenty będą zatem przekazywane jako wskaźnik i mogą wymagać manipulowania niebezpiecznym kodem.
Uwagi:
- zdarza Activeds ostrzeżeń (11) i (54 MSXML2 ostrzeżenia).
- Niewidoczne dla naszych własnych obiektów COM.
<Reference>
wpis w pliku .csproj zawiera atrybutWrapperTool = "tlbimp"
- Pomimo wszystkich ostrzeżeń, nie zaobserwowano żadnych problemów w uruchomionym systemie.
Każdy pomysł, jak pozbyć się ostrzeżeń?
Czy zdołałeś to jakoś rozwiązać? – Mario
Niestety, nie. – gyrolf