web-dev-qa-db-ja.com

WPFプロジェクトのデプロイ後のXamlParseException

WPFアプリを展開しようとしています。セットアップウィザードを使用してセットアッププロジェクトを作成しました。追加したプロジェクト出力はプライマリのみでした。これをビルドしてプログラムをインストールした後、デスクトップのexeをクリックするとすぐに「「プログラム」が機能しなくなった」というポップアップが表示されるので、「プログラムのデバッグ」をクリックすると表示されます。

タイプ「System.Windows.Markup.XamlParseException」の未処理の例外がPresentationFramework.dllで発生しました

追加情報:「Set connectionIdが例外をスローしました。」行番号 '10'および行位置 '9'。

この例外は、何を修正するかについて私に指示するものではありません。アプリのどこにも「connectionId」がありません。

以前にシステムトレイのNotifyIconが原因でXAMLParseExceptionに遭遇しましたが、exeのパスにアイコンを追加することでこれを修正しました。これが問題である可能性があると思ったので、他のすべてのプロジェクト出力とともにアイコンをセットアッププロジェクトに追加しました。まだ動作していません。

私はこれが漠然としたエラーであることを知っていますが、少しでも助けをいただければ幸いです。私のアプリはまったく実行されません。ありがとう!

23
Drew

これは通常、すべての依存関係が出力にコピーされていないことが原因です。エラーメッセージはあまり役に立ちませんが、解析済みの型を解決するために必要な依存関係がすべてアプリケーションにあることを確認します。

通常は、参照されるアセンブリに対してローカルのコピーをtrueに設定するだけで十分ですが、参照自体がアセンブリを参照する場合があるため、これらの参照も明示的に追加する必要がある場合があります。

更新:

@ BENN1THによる重要な追加

アセンブリが必要なものを見たい場合:

プロジェクトを公開してインストールすると同じタイプの問題が発生していましたが(デバッグVS2013デスクトップで問題なく機能し、エラーは発生しませんでした) http://geekswithblogs.net/lbugnion/archive/のアドバイスを使用しました) 2007/03/14/108728.aspx そしてワム!インストールされたプロジェクトは機能していました。

try

{
  InitializeComponent();
}
catch ( Exception ex )
{
  // Log error (including InnerExceptions!)
  // Handle exception
}
32
jjrdk

ソリューションのクリーニングと再構築が役立つ場合があります。

9
user936597

VS2010のWPFソリューションでこの問題が発生しました。ソリューションには、単純なdllと、dllをテストするためのテストプロジェクト(スタートアップに設定)が含まれていました。私のDLLはx86に設定され、テストプロジェクトはx64に設定されました。テストプロジェクトをx86に変更すると、問題は解決しました。

3
bobbyb

デバッガーでこの例外が発生した場合は、例外のInnerExceptionメンバーを確認してください。欠落しているアセンブリに関するヒントが得られる場合があります。

2
Frederik M.J.V

プロジェクトを公開してインストールすると同じタイプの問題が発生していましたが(デバッグVS2013デスクトップで問題なく機能し、エラーは発生しませんでした) http://geekswithblogs.net/lbugnion/archive/のアドバイスを使用しました) 2007/03/14/108728.aspx そしてワム!インストールされたプロジェクトは機能していました。

try

{
  InitializeComponent();
}
catch ( Exception ex )
{
  // Log error (including InnerExceptions!)
  // Handle exception
}
2
BENN1TH

私はこれを理解するために良い4時間を過ごしました。私はxamlとは何の関係もありませんでした!それはMainWindowの初期化でのコードビハインドの小さなエラーであることが判明しました。

他のすべてが失敗した場合は、そこを確認してください

1

アプリケーション内で実行されている複数のdllを使用していて、これらのdllに同じ依存関係の異なるバージョンがロードされていると、これに遭遇しました。

私たちは通常、この問題を防ぐためにリリースビルド中にdllをマージしますが、開発サイクル中にマージされていないdllの複数のセットをテストしている場合はそれがわかります。

テストされていない他のdllのマージされたリリースバージョンを使用して、マージされていないdllの1つのセットのみをテストするか、依存するdllが両方のセットで同じバージョンであることを確認するソリューション。

0
JesikaDG

プロジェクトのクリーニングと再構築は私には効果がありませんでした。

Binディレクトリを削除してから再構築してみてください。この方法で問題を解決しました。

0
Uni

私はこの問題を抱えています。この問題はMicrosoft.Expression.Drawing.dllが原因で発生します。dllをダウンロードして参照を追加してください。

この問題は、アセンブリに署名を削除して解決しました、ここ:

enter image description here

0
AVEbrahimi