Hoofdcategorieën
Topicacties

[C# / VS2008] System.Runtime.Serialization niet gekend*

Pagina: 1

Reageer Nieuw Topic
Ruud Ruudjah = new Ruudjah();
Berichten: 1.329
Reg. datum: 24 november 1999

Ik heb een gegenereerde codefile die references heeft naar System.Rnutime.Serialization. Dat ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
namespace SettleIn
{

    using System.Runtime.Serialization;
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Player", Namespace="http://schemas.datacontract.org/2004/07/SettleInCommon")]
    public partial class Player : object, System.Runtime.Serialization.IExtensibleDataObject
    [SNIP]

Het probleem is simpel: Ik kan geen System.Runtime.Serialization reference toevoegen. Ik kan hem niet vinden bij het scherm add reference > .NET > lijst. Volgens een knakker op dit google resultaat, zit System.Runitme.Serialization in mscorlib.dll, en zou het automagisch moeten worden gereferenced omdat mscorlib.dll automagisch gereferenced staat in elk project.
quote:
The System.Runtime.Serialization namespace is defined in mscorlib.dll, an assembly that's implicitly referenced in any project without you asking for it.
Het gekke is dat ik in dezelfde solution wel een ander project heb die wel deze assembly gereferenced heeft. Daar kan het dus blijkbaar wel. Beide projecten zijn .NET 3.5 projecten.

En dus krijg ik de foutmelding:
code:
1
Error    4    The type or namespace name 'ExtensionDataObject' does not exist in the namespace 'System.Runtime.Serialization' (are you missing an assembly reference?)

Oeps, titel vergeten af te maken. Moest zijn: [C# / VS2008] Kan assembly niet toevoegen

Compile error: circular reflection detected

will code c# for food


code:
1
2
3
4
namespace SettleIn
{

    using System.Runtime.Serialization;

Ik vind dit nogal een vreemde; het "using" statement moet toch buiten de class gezet worden? (Buiten de namespace)

Dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
using System
using System.Net.Serialization;
namespace SettleIn
{
   public class GoT : System.Web.GoT
   {
      public void _post()
      {
         etc.etc....
      }
   }
}

dominic wijzigde dit bericht 11-02-2008 20:58 (30%)

Berichten: 115
Reg. datum: 23 februari 2001

@dominic : Het mag beide, maakt niks uit.

@TS, ik ben bang dat je toch System.Runtime.Serialization bij refrences moet toevoegen.
net gekeken ( C# VS2008 ) en bij mij lukt dat ook gewoon, zie je em niet per ongeluk over het hoofd ?

anybody saw my rabbit??

will code c# for food

quote:
Fiander schreef op maandag 11 februari 2008 @ 20:56:
@dominic : Het mag beide, maakt niks uit.

@TS, ik ben bang dat je toch System.Runtime.Serialization bij refrences moet toevoegen.
net gekeken ( C# VS2008 ) en bij mij lukt dat ook gewoon, zie je em niet per ongeluk over het hoofd ?
Hmm ok, wordt dan wel een rommeltje ;) Maargoed, weet ik dat ook weer..
Ruud Ruudjah = new Ruudjah();
Berichten: 1.329
Reg. datum: 24 november 1999

http://www.soosarnhem.nl/runser.JPG

Compile error: circular reflection detected


Acties: [view][quote]


Door: whoami
Moderator PRG/SEA/DTE
ben je zeker dat je project waar je die reference niet kan leggen, een projecttype is waar Serialization ondersteund wordt ?
Wacht eens even: je krijgt geen compiler error op je using statement:
code:
1
using System.Runtime.Serialization

?

Maar je krijgt wel hier een error:
code:
1
System.Runtime.Serialization.IExtensibleDataObject

De error die je krijgt, is nl:
code:
1
The type or namespace name 'ExtensionDataObject' does not exist in the namespace 'System.Runtime.Serialization'

Dit is een WCF class die enkel beschikbaar is vanaf .NET 3.0
Je bent wel zeker dat je in VS.NET 2008 ingesteld hebt, dat dit project voor .NET 3.x gebuild moet worden ?

whoami wijzigde dit bericht 11-02-2008 22:31 (86%)

Ruud Ruudjah = new Ruudjah();
Berichten: 1.329
Reg. datum: 24 november 1999

Ja. Bij de project properties is het "Target framework" ingesteld op .NET 3.5.

Het project die wel System.Runtime.Serialization als reference heeft, was een template project van WCF. Het andere project waar geen System.Runtime.Serialization in gereffed wil worden, was een .NET 3.5 WPF project. Ik neem aan dat een .NET 3.5 WPF project zeker wel de System.Runtime.Serialization classes kan gebruiken. Zit immers in hetzelfde framework.

Ruudjah wijzigde dit bericht 12-02-2008 17:31 (69%)

Compile error: circular reflection detected

Ruud Ruudjah = new Ruudjah();
Berichten: 1.329
Reg. datum: 24 november 1999

Ik zit nu even te kijken, ik kan in geen enkel WPF application een System.Runtime.Serialization reference toevoegen. Heb ik iets gemist in het .NET framework 3.0 en 3.5 met betrekking tot de namespaces? Het lijkt erop dat omdat het project geen WCF project is, er geen System.Runtime.Serialization kan worden gereffed.

Compile error: circular reflection detected


Acties: [view][quote]


Door: whoami
Moderator PRG/SEA/DTE
System.Runtime.Serialization zit in mscorlib, maar die ene class die je gebruikt (ExtensionDataObject) is een .NET 3.x class.
Ruud Ruudjah = new Ruudjah();
Berichten: 1.329
Reg. datum: 24 november 1999

Ik heb tijdelijk niet de beschikking over nog een insantie van VS2008 op een ander workstation. Is hier iemand die zo vriendelijk zou willen zijn om een WPF project te maken en hier de System.Runtime.Serialization reference te willen toevoegen? Als dat wel lukt is het duidelijk iets met met VS2008/XP installatie.

Bij voorbaat bedankt!

Compile error: circular reflection detected

Berichten: 197
Reg. datum: 11 april 2007

Met een nieuw WPF project, na het toevoegen van de reference (System.Runtime.Serialization) en de using statement compilet het programma prima. Visual studio herkent het ExtensionDataObject type ook als ik het in de constructor type (i.e. groen / blauwe kleur).
 
Ruud Ruudjah = new Ruudjah();
Berichten: 1.329
Reg. datum: 24 november 1999

Ugh. Na een hoop gekloot en het in de kast zetten van deze 'bug', ben ik er nu achter.

Op één of andere manier zit er een bug in VS2008 die ervoor zorgt dat je soms geen references kan toevoegen in de IDE. Het lijkt dan zo te zijn dat deze reference compleet niet bestaat in het .NET 3.5 framework. Wat er denk ik onder water gebeurd is dat VS 2008 op één of ander manier de boel filtert.

De oplossing: Edit je .csproj file en zet daar handmatig de references in. het csproj bestand is gewoon een XML file.
XML:
1
2
    <Reference Include="System.ServiceModel" />
    <Reference Include="System.Runtime.Serialization" />

Deze forumpost is een andere instantie van het probleem :P, met onder andere hier een oplossing. Wat mij betreft geeft Microsoft dus ook al impliciet aan dat deze bug erin zit, anders haddden ze niet zo'n oplossing gegeven (handmatig compilen, waardoor de reference waarschijnlijk automagisch alsnog wordt toegevoegd).

Vraag ik me alleen af waarom ik niet eerder heb geprobeerd de references handmatig in de project file toe te voegen 8)7

Ruudjah wijzigde dit bericht 04-07-2008 01:39 (13%)

Compile error: circular reflection detected

Burn your lie into me
Berichten: 3.073
Reg. datum: 07 maart 2000

quote:
Ruudjah schreef op vrijdag 04 juli 2008 @ 01:38:
Vraag ik me alleen af waarom ik niet eerder heb geprobeerd de references handmatig in de project file toe te voegen 8)7
Omdat je van een IDE verwacht dat dat gewoon goed gaat, je wordt er wat dat betreft een beetje lui van :)

Penance can't absolve your sin. All your belief cannot absolve your sin.

Berichten: 5.653
Reg. datum: 02 februari 2004

Er is intussen ook een bèta SP1 voor VS2008, misschien dat die bug daarin is opgelost ook.

Kater? Eerst water, de rest komt later
Bouw mee aan Tweak-City! Topic


Acties: [view][quote]


Door: whoami
Moderator PRG/SEA/DTE
-> DTE

Pagina: 1



VNU Media logo Powered by True

© 1998 - 2008 Tweakers.net - Alle rechten voorbehouden

Uitgever van: