컴파일러 오류 CS0731
업데이트: 2007년 11월
오류 메시지
'type' 형식에 대한 형식 전달자가 'assembly' 어셈블리에서 순환됩니다.
The type forwarder for type 'type' in assembly 'assembly' causes a cycle
이 오류는 잘못된 형식의 가져온 메타데이터를 사용할 때만 발생할 수 있으며, C# 소스만 사용하는 경우에는 발생하지 않습니다.
예제
다음 샘플에서는 CS0731 오류가 발생하는 경우를 보여 줍니다. 예제는 다음의 세 파일로 구성되어 있습니다.
1. Circular.IL
2. Circular2.IL
3. CS0731.cs
먼저 .IL 파일을 라이브러리로 컴파일한 다음 두 파일을 참조하는 .cs 코드를 컴파일하십시오.
// Circular.il
// compile with: /DLL /out=Circular.dll
.assembly extern circular2
{
.ver 0:0:0:0
}
.assembly extern circular3
{
.ver 0:0:0:0
}
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly Circular
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.class extern forwarder Circular.Referenced.TypeForwarder
{
.assembly extern circular2
}
.module Circular.dll
// MVID: {880C2329-C915-42A0-83E9-9D10C3E6DBD0}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x04E40000
// ======== CLASS MEMBERS DECLARATION =========
.class public abstract auto ansi sealed beforefieldinit User
extends [mscorlib]System.Object
{
.method public hidebysig static class [circular2]Circular.Referenced.TypeForwarder
F() cil managed
{
.maxstack 1
newobj instance void [circular2]Circular.Referenced.TypeForwarder::.ctor()
ret
}
}
// Circular2.il
// compile with: /DLL /out=Circular2.dll
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern Circular
{
.ver 0:0:0:0
}
.assembly circular2
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.class extern forwarder Circular.Referenced.TypeForwarder
{
.assembly extern Circular
}
.module circular2.dll
// MVID: {8B3BE5C8-DBE1-49C4-BC72-DF35F0387C21}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x04E40000
// CS0731.cs
// compile with: /reference:circular.dll /reference:circular2.dll
// CS0731 expected
class A {
public static void Main() {
User.F();
}
}