7

私の WPF アプリケーションでこのエラーが発生しています。このエラーは常に発生するとは限りません。Clean を作成してから Rebuild すると、すべて問題ありません。

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'
4

5 に答える 5

3

難読化ツールRummage(私はAldarayで働いています)にバンドルされている無料のツールであるRummageTypeRenamerを使用して、GeneratedInternalTypeHelperタイプの名前を別の名前に変更できます。

GeneratedInternalTypeHelper$(ProjectName)プロジェクト間で一意であり、衝突しないように、名前を次のように変更します。ILMergeを機能させるために、すべてのビルドスクリプトでこれを行います(同僚のプライベートブログのブログエントリ)。

于 2012-10-04T17:00:20.960 に答える
1

WPF に関するこの問題について議論している Scott Hanselmanの記事を次に示します。

この問題を抱えていた他の人々は、いくつかの修正プログラムをインストールすることで修正しました。詳細については、この記事をご覧ください。

Citrix を使用している場合は、こちらを確認してください。権限に問題がある可能性があります。この特定の記事では ASP .NET アプリケーションを扱っていますが、WPF アプリケーションでも同様の問題が発生する可能性があります。始めるには良い場所です。

于 2010-10-01T20:03:30.630 に答える
0

ライブラリにこの生成されたクラスXamlGeneratedNamespace.GeneratedInternalTypeHelperがある理由を理解しようとしました。MSDN何も役に立たないと言っています:

XAML ドキュメントの CLR 型を生成するために使用される、ワークフロー デザイナーによって生成されるクラス。

しかし、このクラスの生成を引き起こすコード行を見つけました:

<Grid DataContext="{TemplateBinding InternalDataContext}">

「ランタイム同等」に置き換えました:

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

多分それは誰かを助けるかもしれません。

于 2010-10-06T15:03:17.060 に答える
0

XmlSerializer の生成されたコードは、アプリケーションの実行後に c:\Users\\AppData\Local\Temp\ で見つけることができます。これは、something.cs になります。私のものは「me2ywucq.0.cs」で、コード内のタイプ名をテキスト検索するだけです。

実行時にアセンブリを作成するときにコードを書き込むパスを変更することもできます。「 XmlSerializer が一時アセンブリを出力する場所の変更」
を参照してください。 app.config または web.config に次を追加します。

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

コードを見つけたら、それを自分で myAssembly.XmlSerializers.dll にコンパイルするか、コードに IXmlSerializer を実装することができます。これにより、以前のシリアル化との互換性が失われません。

于 2012-12-24T11:28:07.160 に答える
0

このエラーは、永続的にコンパイルされた XML シリアライゼーション アセンブリ ジェネレーターから発生します。XML シリアライズ可能な型からクラスを生成します。これを使用しない場合は、プロジェクトのプロパティでこれをオフにすることができます。

于 2010-10-01T20:04:21.000 に答える