Interop-typen kan ikke bygges inn
Jeg lager en webapplikasjon på .NET 4.0-rammeverket (beta2) i C#.
Når jeg prøver å bruke en assembly som heter "ActiveHomeScriptLib", får jeg følgende feil:
Interop type 'ActiveHomeScriptLib.ActiveHomeClass' kan ikke bygges inn. Bruk det aktuelle grensesnittet i stedet.
Når jeg endrer rammeverket til versjon 3.5, får jeg ingen feil.
Hva er en Interop Type, og hvorfor oppstår dette bare når jeg bruker 4.0-rammeverket?
647
3
.NET 4.0 gjør det mulig å bygge inn primære interop-assemblies (eller rettere sagt, de delene du trenger) i assemblies, slik at du ikke trenger å distribuere dem sammen med applikasjonen.
Av en eller annen grunn kan ikke denne assembly-enheten bygges inn - men det høres ut som om det ikke er noe problem for deg. Det er bare å åpne fanen Egenskaper for enheten i Visual Studio 2010 og sette "Embed Interop Types" til "False".
EDIT: Se også Michael Gustus's svar, der du fjerner suffikset
Class
fra typene du bruker.Som Jan Det tok meg en stund å skjønne det .. =S Så for alle andre som er blendet av frustrasjon.
Vi utdyper Jons riktige svar.
Problemet her er at du kombinerer den nye funksjonen "Embed Interop Types" (eller NoPIA) med bruk av en klassetype. Funksjonen "Embed Interop Types" fungerer ved at alle typene fra en PIA (Primary Interop Assembly) knyttes statisk til den refererende enheten, slik at du slipper å distribuere den.
Denne funksjonen fungerer utmerket for de fleste typer i en PIA, men den har noen begrensninger. En av dem er at du ikke kan bygge inn klasser (det er et serviceproblem). Misha har en detaljert bloggartikkel om hvorfor dette ikke er tillatt.