Realise this is a bit edge case, but if you try to convert this code to VB.NET
[PreserveSig]
int AddSourceFilterForMoniker(
#if USING_NET11
[In] UCOMIMoniker pMoniker,
[In] UCOMIBindCtx pCtx,
#else
[In] IMoniker pMoniker,
[In] IBindCtx pCtx,
#endif
[In, MarshalAs(UnmanagedType.LPWStr)] string lpcwstrFilterName,
[Out] out IBaseFilter ppFilter
);
You end up with
#If USING_NET11 Then
#Else
#End If
at the very top (rather than in the correct places around the attributes?)