2010-10-01 11 views
7

Ich erhalte diesen Fehler in meiner WPF-Anwendung. Ich bekomme diesen Fehler nicht immer. Wenn ich Clean mache und dann Rebuild alles ist ok.WPF Fehler CS0433

SGEN (0,0):            
error: Unable to generate a temporary class (result=1). 

SGEN (0,0): 
errorCS0433: The type 'XamlGeneratedNamespace.GeneratedInternalTypeHelper' exists in both 'library1.dll' and 'library2.dll' 

Antwort

1

Hier ist ein article von Scott Hanselman dieses Problem für WPF zu diskutieren.

Andere Menschen, die dieses Problem gehabt haben haben es behoben, indem einige Hotfixes installieren. Weitere Informationen finden Sie unter this article.

Wenn Sie Citrix verwenden, könnten Sie check this out wollen. Sie könnten ein Berechtigungsproblem haben. Dieser spezielle Artikel behandelt eine ASP.NET-Anwendung, aber Sie haben möglicherweise ein ähnliches Problem in Ihrer WPF-Anwendung. Es ist ein guter Anfang.

+0

Ich benutze Citrix nicht. Nicht sicher, ob es wegen Hotfixes im genannten Artikel zur Verfügung gestellt wird. Ich habe diesen Fehler erst heute bekommen.Es funktionierte perfekt für mehrere Monate. – Pashec

0

Dieser Fehler kommt aus dem persistenten XML Serialisierungsassembly Generator zusammengestellt. Es generiert Klassen aus serialisierbaren XML-Typen. Wenn Sie dies nicht verwenden, können Sie dies in den Projekteigenschaften deaktivieren.

+0

In einem Projekt verwende ich nicht XML Serialization Assembly Generator, also deaktiviere ich es. Es half. Aber ich bin immer noch neugierig, warum es passiert ist und wie ich es beheben könnte, wenn ich in beiden Projekten sgen müsste. – Pashec

0

Ich habe versucht, herauszufinden, warum ich diese generierte Klasse XamlGeneratedNamespace.GeneratedInternalTypeHelper in meiner Bibliothek habe. MSDN says nichts hilfreich:

Eine Klasse vom Workflow Designer generiert verwendet, um CLR-Typen für XAML-Dokumente zu erzeugen.

Aber ich fand die Codezeile, die die Erzeugung dieser Klasse verursacht:

<Grid DataContext="{TemplateBinding InternalDataContext}"> 

ich es mit „Laufzeit-Äquivalent“ ersetzt:

<Grid DataContext="{Binding InternalDataContext, RelativeSource={RelativeSource TemplatedParent}}"> 

Vielleicht kann es jemand helfen.

3

Sie könnten RummageTypeRenamer, ein kostenloses Tool im Bundle mit unserem Obfuscator Rummage (ich arbeite für Aldaray) verwenden, um den GeneratedInternalTypeHelper Typ in etwas anderes umzubenennen.

Wir benennen Sie es um so etwas wie GeneratedInternalTypeHelper$(ProjectName), so dass es über Projekte einzigartig ist und nie kollidiert. Wir machen das in all unseren Build-Skripten to get ILMerge to work (Blogeintrag im privaten Blog meiner Kollegin).

+0

Arbeitete für mich. Ich habe es in Post-Build wie [hier] (http://stackoverflow.com/q/19436532/2772330). –

0

Sie finden den generierten Code des XmlSerializers in c: \ Benutzer \\ AppData \ Local \ Temp \ nachdem Sie Ihre Anwendung ausgeführt haben, wird es something.cs sein. Mine war: "me2ywucq.0.cs", nur Text suchen Sie nach Ihrem Typ-Namen in seinem Code.

Sie können auch den Pfad ändern sie den Code schreiben, wenn es erzeugt Baugruppen zur Laufzeit siehe Changing where XmlSerializer Outputs Temporary Assemblies by scott
folgendes zu Ihrem app.config oder web.config hinzufügen:

<system.xml.serialization> 
    <xmlSerializer tempFilesLocation="c:\\foo"/> 
</system.xml.serialization> 

Nach dem Code zu finden, Sie können es selbst in eine myAssembly.XmlSerializers.dll kompilieren oder IXmlSerializer in Ihrem Code implementieren, ohne die Kompatibilität mit früheren Serialisierungen zu beeinträchtigen.