.NET 2.0을 사용하여 C# COM 클래스를 작성하여 IActiveScriptParse32 인터페이스를 구현했습니다. RegAsm.exe를 사용하여 TLB 파일을 생성 할 때 EXCEPINFO 구조를 포함하는 인터페이스 메서드는 내보내지지 않습니다. RegAsm.exe가 EXCEPINFO 구조를 내보내는 이유는 무엇입니까?RegAsm.exe가 EXCEPINFO 구조체를 내 보내지 않습니다.
인터페이스 및 클래스 선언 :
는 RegAsm.exe이 경고를 생성using System.Runtime.InteropServices;
using ComTypes = System.Runtime.InteropServices.ComTypes;
namespace ScriptEngine
{
[Guid("BB1A2AE2-A4F9-11cf-8F20-00805F2CD064")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IActiveScriptParse32
{
void InitNew();
void AddScriptlet([MarshalAs(UnmanagedType.LPWStr)] string defaultName,
[MarshalAs(UnmanagedType.LPWStr)] string code,
[MarshalAs(UnmanagedType.LPWStr)] string itemName,
[MarshalAs(UnmanagedType.LPWStr)] string subItemName,
[MarshalAs(UnmanagedType.LPWStr)] string eventName,
[MarshalAs(UnmanagedType.LPWStr)] string delimiter,
IntPtr sourceContextCookie,
uint startingLineNumber,
ScriptTextFlags flags,
[MarshalAs(UnmanagedType.BStr)] out string name,
out ComTypes.EXCEPINFO exceptionInfo);
void ParseScriptText([MarshalAs(UnmanagedType.LPWStr)] string code,
[MarshalAs(UnmanagedType.LPWStr)] string itemName,
[MarshalAs(UnmanagedType.IUnknown)] object context,
[MarshalAs(UnmanagedType.LPWStr)] string delimiter,
IntPtr sourceContextCookie,
uint startingLineNumber,
ScriptTextFlags flags,
out object result,
out ComTypes.EXCEPINFO exceptionInfo);
}
[ComVisible(true)]
[Guid("70C3474B-CFE3-4CBB-89F3-E9C70386BCB5")]
public class MyScriptParser : IActiveScriptParse32
{
// Other interface methods
public void ParseScriptText(string code, string itemName, object context, string delimiter, IntPtr sourceContextCookie, uint startingLineNumber, ScriptTextFlags flags, out object result, out ComTypes.EXCEPINFO exceptionInfo)
{
//Code
}
}
}
:
그리고이 선언과 .TLB 파일 생성유형 라이브러리 수출 경고 처리 'ScriptEngine.IActiveScriptParse32을. ParseScriptText (exceptionInfo), MyScriptParser '입니다. 경고 : 비 COM 표시 값 형식 'System.Runtime.InteropServices.ComTypes.EXCEPINFO'는 현재 내보내고있는 형식 또는 기본 형식 인 중 하나에서 참조 된 입니다.
[
odl,
uuid(BB1A2AE2-A4F9-11CF-8F20-00805F2CD064),
version(1.0),
oleautomation,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "ScriptEngine.IActiveScriptParse32")
]
interface IActiveScriptParse32 : IUnknown {
HRESULT _stdcall InitNew();
};