Silverlight 4アプリ。このエラーはどういう意味ですか?:
「COMコンポーネントの呼び出しからエラーHRESULT E_FAILが返されました。」
これは非常に一般的なエラーです。 VSデバッガーは、デバッグ時にエラーの正確な場所を指していません。
これはちょっと古い質問ですが、Googlingがまったく同じ問題についてこのスレッドを見つけたので、答えを出すと思いました。
私の場合、サンプルXAMLをWebからコピーして、Silverlight Toolkit 4を使い始めました。このサンプルXAMLには、実際にコードビハインドに存在するハンドラーとは関係のないクリックイベントハンドラーを備えたシンプルなボタンが含まれていました。コンパイラがエラーメッセージを表示しなかったため、最初はこの単純な問題に気付きませんでした。実行時に上記の「COMコンポーネントの呼び出しからエラーHRESULT E_FAILが返されました」というメッセージが表示されました。コンパイル時に実際の根本的な問題が明らかになったのは、他のコンテンツなしで真新しいSilverlightアプリケーションにコピーしてサンプルXAMLを分離したときだけです。
したがって、実行時に同じエラーメッセージが表示される場合、コンパイル時に検出されるはずだったはずのエラーについてXAMLを慎重に確認することをお勧めしますが、何らかの理由で実行時エラーが記録されます上記。デバッグするために、私がやったことを実行して、他のコンテンツのないスタンドアロンのSilverlightアプリでエラーの原因となっているコードを分離し、私に似たより役立つエラーメッセージが表示されるかどうかを確認できます。
HTH。
そこには多くの解決策がありますが、これは私にとって数回働いた唯一の解決策です。
ステップ1:Visual Studioを閉じます
ステップ2:*。csproj.userおよび*。suoファイルを削除します
ステップ3:VSを再度開き、デバッグモードでプロジェクトを再度実行してください。
注:この状況は、複数のユーザーが同じプロジェクトで異なるVSバージョン
.suo
ファイルは、2つのVSバージョン間のラウンドトリップでサポートされていません。現在のユーザーが自分のVS作業環境用に選択した設定に関する情報が含まれています。
私の状況では:
私が作成します
class MyControl : ContentControl {
}
デフォルトでは、クラスはパブリックではなく、XAMLはそれをロードして例外をスローできません
COMコンポーネントの呼び出しからエラーHRESULT E_FAILが返されました
クラスのスコープをpublicに変更するだけで、エラーが消えます。
この助けを願っています。
PS。マイクロソフトは、スタックトレースなしで謎のエラーメッセージを投げるだけでなく、情報を提供する必要があります。
また、このエラーが発生しました。この問題は、必要なすべてのアセンブリをプロジェクトに追加していないことに関連していることがわかりました。私の場合、Silverlight Toolkitに依存するUserControlを使用していましたが、このリファレンスを追加していません。私はちょうど参照を追加し、すべてが解決しました:)
このエラーを生成する方法の1つは、今日私が偶然見つけたものです。 XAMLには次のボタンがあります。
<Button x:Name="button" Click="Button_Click" Content="Click me" />
ボタンのClick
イベントを処理するイベントハンドラは次のとおりです。
private void Button_Click(object sender, RoutedEventArgs e)
{
button.Margin = new Thickness(0, double.NaN, 0, 0);
}
ボタンをクリックすると、前述のエラーが表示されます。 NaN
をPositiveInfinity
またはNegativeInfinity
に置き換えると、同じエラーが発生します。
興味深いことに、Thickness
コンストラクターの最初のパラメーターに2番目ではなくNaN
が含まれている場合、別のエラーメッセージが表示されます。
Xamlページでこのエラーが発生しましたが、構文エラーはありませんでした。プロジェクトをクリーニングして再構築すると、問題が解決しました。 fyi ...
XAMLの問題からこのエラーが発生しました。奇妙なことは、Style
属性とMargin
属性で使用されるリソースが不足していることです。つまり、アプリは正常に実行され、再共有者でさえ「ヒント」のみを報告します。
これらの問題を解決したら、「COMコンポーネントの呼び出しからエラーHRESULT E_FAILが返されました。」消えた。他の人が言ったように、これは曖昧なエラーであり、デバッグが非常に困難です。この場合、さまざまな重大度のVSおよびReSharperメッセージが数百個ある大規模なプロジェクトを継承しました-StaticResource
属性にStyle
属性がないことは最初にチェックした場所ではありませんでした!
IIS App PoolはTeam Foundation Serverへのクエリアクセスを持つアカウントとして実行する必要があります。これにより、問題が修正されます。
現在のSL4 Telerikコントロールを使用してこのエラーが発生しました。同様の問題が報告されました here with solution ... sort of。問題は、Expression Blendがコントロールのキャッシュを管理する方法にあるようです。
私はこの例外を持っていて、夢中になりました。名前空間の項目が競合する可能性のあるコンポーネントを最近インストールしたかどうかを確認することをお勧めします。私の場合、Windows Phoneのストックツールキットと同じ名前のアイテムが含まれるWindows Phoneツールキットをインストールしました。 Asap Nugetパッケージマネージャーからこれをアンインストールしましたが、すべて正常に戻りました。
私の問題はスタイルの欠落でした。次のようなカスタムブラシでコントロールテンプレートをオーバーライドしました。
<Style x:Key="MyCustomStyle" TargetType="Thumb">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Thumb">
....
<TextBlock Foreground="{StaticResource MyCustomBrush}"
myCustomBrushの定義が欠落していました。
<SolidColorBrush x:Key="MyCustomBrush" Color="#FFAC0909"/>
そして、BOOM、アプリが起動せず、そのCOMエラーメッセージが表示されました。
まあ、私はほとんどコンピューターを食べようとしていました。最後に、XAMLページorzのImageオブジェクトのMargin設定の1つのパラメーターを削除したことが問題であることがわかりました。
Margin="0,-20,0"
どちらか
Margin="0,-20,0,0"
明らかに、私はXAMLを変更したことがないことに気付いていなかったため、「しばらく」の背後にあるコードのトラブルシューティングを行ってきました。
幸いなことに、この投稿を見つけて、XAMLページを含むすべてのものを再確認しました。
これはセキュリティと権限の問題です。 IISを確認し、統合セキュリティがオンになっていることを確認します。次に、アプリケーション保護レベルを中に設定します(高すぎる場合、これが結果である可能性があります)。次に、Web.Configファイルを確認します。なりすましがオフになっていることを確認してください。
これが役立つはずです。
Team Foundation Serverを照会するときにMicrosoft.TEAMFOUNDATIONライブラリを使用しようとしたときに、この問題を最終的に修正したのは次のとおりです。
DTC構成----
これがお役に立てば幸いです。
(Microsoft Expressionを使用して)ライブビデオとオーディオをエンコードしているときにこの問題が発生し、次のコードが例外をスローしますランダムに:
// Set bitrate
liveJob.OutputFormat.VideoProfile.Bitrate = new ConstantBitrate(2500);
// Set Video size
liveJob.OutputFormat.VideoProfile.Size = new Size(320,240);
最初の行がまだ別のスレッドで実行されている間に、2行目が例外をスローすることが判明するまで!
そしてもちろん、それは私のせいでした-私はコードでメソッドを呼び出しましたが、クリックイベントによっても呼び出されました...
ほとんどの場合、特にXAMLで問題の正確な場所を確認することは困難です。その失敗を見つける別の方法は、次の手順を実行することです
この時点で、2つのオプションがあります。
表示された例外画面の詳細を表示をクリックします。発生元からヒントが得られるまで、内部の例外を掘り下げてください。
コールスタックを表示して、この例外の原因となっている行のコードを確認します。これにより、問題を解決する手がかりが得られます。
私にとって、これはXAML解析エラーでした。データテンプレートには、余分な S 2つのタグの間(おそらく私が押したため S の代わりに CTRL+S)。例えば...
<DataTemplate>
<Border/>s
</DataTemplate>
そのため、表示時にこの例外の原因となるビューで適切にフォーマットされていないXMLを探すことをお勧めします。
私にとっては、何年も前にCodePlexからダウンロードしたSplitButtonコントロールに絞り込みました。ソリューションをSilverlight 4からSilverlight 5にアップグレードしましたが、このエラーで非難されました。 XAMLをすべてのコントロールにコメントアウトし、エラーが再び表示されるまでコメントを1つずつコメント解除することで、それを絞り込むことができました。
System.Reflection.TargetInvocationExceptionはユーザーコードによって処理されませんでした Message =例外は呼び出しのターゲットによってスローされました。 StackTrace: at System.RuntimeMethodHandle。 InvokeMethod(Object target、Object [] arguments、Signature sig、Boolean constructor) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj、BindingFlags invokeAttr、Binderバインダ、Object [] parameters、CultureInfo culture、Boolean skipVisibilityChecks) at System.Delegate.DynamicInvokeImpl(Object [] args) at System.Delegate.DynamicInvoke(Object [] args) at Homexaml_3.BindingOperation(Object BindingState、Int32、Action ) InnerException: Message = Error HRESULT E_FAILがCOMコンポーネントの呼び出しから返されました。 StackTrace: at MS.Internal.XcpImports.CheckHResult( UInt32 hr) at MS.Internal.XcpImports.UIElement_Measure(UIElement要素、サイズa vailableSize) at System.Windows.UIElement.Measure(Size availableSize)
修正したのは、古い参照System.Windows.ControlとSystem.Windows.Controls.Toolkitを手動で削除してから、Silverlight 5 SDKフォルダーからそれらを再度追加したことです。
数か月後に再び発生する場合、それが誰かを助ける(そして私を助ける!)ことを願っています。
Silverlight 5プロジェクトのVS 2013で最近このエラーを受け取りました。上記のどれも私にとってはうまくいきませんでした。奇妙なことに、これはスレッドの問題でした(通常、バックグラウンドスレッドで誤ってUIElementを作成しようとした場合、これを説明する例外に慣れています)。
Dispatcher.BeginInvokeを使用してMainElementにUIElementsを追加するコードをラップすると、問題が解決しました。
Dispatcher.BeginInvoke(() =>
{
// your code
});
この問題の理由のほとんどは、コンポーネント設計に依存する依存関係に関連しています。設計上のこの問題に直面するだけです。
解決は簡単ですが、時間がかかります:)プロジェクトをクリーンアップし、すべてを再構築します。デザインをもう一度入力すると、すべてが正常に表示されます。
これがお役に立てば幸いです!
この例外が最近発生した場合は、silverlight sdk4を再インストールしてください。
私の場合、データベースをSSDTプロジェクトにインポートしようとしましたが、このデータベースはすでにプロジェクトにありましたが、空でした。プロジェクトをTools -> SQL server -> New schema comparsion
で更新しました。ソース-データベース、ターゲット-プロジェクト。比較-更新。
それが誰かに役立つことを願って
これは古い質問ですが、私の場合、上記の解決策はどれもうまくいきませんでした。 NuGetパッケージを更新しようとしていた Visual Studio 2017で、次の例外が発生していました。
update-package : Failed to add reference to 'System.Web.Razor'.
Error HRESULT E_FAIL has been returned from a call to a COM component.
実際、restore-packageなどの他のNuGetコマンドは、同様の例外メッセージで失敗していました。
パッケージディレクトリの下にいくつかのアセンブリが欠落していることを発見したため、パッケージディレクトリを削除に戻し、Visual Studio 2017に戻りました。ソリューションを開くと、パッケージを復元するように求められ、その後、パッケージを更新できました。
注:削除する前にpackageディレクトリのバックアップを作成してください。
このエラーは、特定の定義やトレースが与えられていないエラー、特に比較的外部のXamlコードに関係するエラーの「キャッチオール」のようです。
私の特定のケースでは、名前空間に問題があるように見えました。私のUserControlは、独自の名前空間(「UserControls」という名前)にあります。マイページは独自の名前空間(「ページ」)にあります。 UserControl内からPages名前空間の列挙定義を参照したいので、usingステートメントを追加しました:using MySolution.Pages;
。些細なことで、これが問題だとは信じたくありませんでした。しかし、そのusingステートメントを削除して、UserControls名前空間に列挙型を作成すると、ほら、HRESULTエラーがなくなり、追加のボーナスとして、UserControlで定義された依存関係プロパティが作成されました。 、突然そこにあり、使用する準備ができました。
私の場合、これの根本的な原因は何らかの循環参照の問題であると思われます。そして、その情報を関連付けるための特定のエラーがなかったため、このHRESULT E_FAIL Comエラーにシャッフルされました。
このエラーを修正するには、XAMLファイルを削除し、新しいアイテムの追加から新しいファイルを追加します。次に、古いファイルにあるXAMLコードを貼り付けました。