2009-06-05 23 views
16

別のWPFプロジェクトから3つのクラスをコピーした後、が名前空間を変更しました。UserControlファイルの名前空間を変更した後、... g.csファイルにエラーが発生する

プロジェクトを実行すると、というエラーが ".g.cs"ファイルにあり、名前空間が間違っていると表示されます。この名前空間を変更しますが、コンパイルして再度実行すると、 ".g.cs"ファイルが再生成され、古い名前空間のバージョンで上書きされ、エラーが再び表示されます。

ファイルとは何であり、どのように私は彼らが代わりには明らかにどこかに保持することをいくつかのキャッシュの現在ファイルから再生成することができますか?

私は\ binと\ objディレクトリを削除し、再構築しましたが、まだエラーが発生します。

答えて

33

.g.csファイルは.xamlファイルから生成されます。新しい名前空間で修飾されたクラス名と一致するように、.xamlファイルのx:class =属性を変更する必要があります。次のコンパイル時に.g.csが正しく生成されます。 (手動.g.csファイルを変更しないでください - あなただけの自分を挫折ます。)例えば

、あなたの.csファイルに以前にこれを持っていた場合:中

namespace Foo { 
    class Bar { ... 

とこれはあなた.xaml:

<UserControl x:Class="Foo.Bar" ... 

そして、あなたの名前空間を変更:

namespace Baz { 
    class Bar { ... 

次に、あなたがあなたのの.xamlを変更する必要がありますファイルには:

<UserControl x:Class="Baz.Bar" ... 
+1

それはそれでした:x:class = entriesを変更するだけで済みました。 –

1

x:Class属性のクラスのネームスペースをXAMLのUserControlにも更新しましたか?

これは失敗しました。プロジェクトを再構築しようとしましたか?

9

これは古いスレッドですが、ユーザーがこの問題に遭遇することがあるため、別の原因が考えられます。ネームスペースを変更するときに更新を忘れたxamns:xxネームスペースがxamlにある場合、g.csファイル内で無効なusingステートメントも発生します。

+0

+1これが私の原因でした。自動的に生成された 'xmlns:local =" clr-namespace:Some.App.Namespace "は間違っていて、間違った名前空間を指していました。 – finlaybob

5

「obj」フォルダを削除して再構築することで、これを解決する別の方法が見つかりました。

+0

私はそれをすべてローカルでうまく使っていて、ビルドサーバーで失敗しました。ビルドサーバーにログインしてobjフォルダを削除しなければならなかった... –

+0

ありがとう、私のために働いてくれてありがとう – Artiom

2

私は昔の名前空間がまだ存在していた私のAssemblyInfo.cs

[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")] 

でXML名前空間のショートカットを定義していました。 すべてのmy * .xamlファイルを検索しても明らかに役に立たなかった...

ショートカットを修正した後、エラーはすぐに消えました。

関連する問題