問題タブ [project-reference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 重複参照/あいまいな呼び出しを引き起こす参照チェーン
DevExpress ライブラリを参照する MVC UI を使用したソリューションがあります。
DevExpress ライブラリを使用してビルドされた、ヘルパーとして参照した別の dll があります。
このセットアップでは、UI アプリケーションを実行しようとすると、ビューのコンパイルで次のエラーが発生します。
次のメソッドまたはプロパティ間の呼び出しがあいまいです: 'DevExpress.Web.Mvc.UI.HtmlHelperExtension.DevExpress(System.Web.Mvc.HtmlHelper)' と 'DevExpress.Web.Mvc.UI.HtmlHelperExtension.DevExpress(System.Web .Mvc.HtmlHelper)'
UI プロジェクトから参照を削除するとMyFramework
、これは起こりません。
これらの devexpress ライブラリが 2 回参照されているようで、解決方法がわかりません。UI プロジェクトの参照リストでは、当然のことながら、各 DevEx ライブラリは 1 回しかリストされておらず、私のフレームワーク dll への参照は 1 つだけです。
これが DevEx の問題なのか、それとも .NET の一般的な参照の問題なのかはわかりません (後者だと思います)。
c# - アセンブリ参照を自動的に更新する Visual Studio
ソリューション A には、ソリューション B のプロジェクトによって参照されるアセンブリをビルドするプロジェクトがあります。
ソリューション A は c:\Bob にビルドし、ソリューション B はアセンブリ c:\Bob\Assembly1.dll を参照して C:\Kate\ にビルドし、Assembly1.dll を c:\Kate\ にコピーします。
ソリューション A が再構築された場合 (ソリューション B が Visual Studio で開かれている間)、ソリューション B の Assembly1.dll への参照は一時的に壊れており、Visual Studio は c:\Bob\Assmebly1.dll から参照を更新することによってこれを自動的に解決しようとします。 、c:\Kate\Assembly1.dll (これは現在、誤った参照です)。
この動作を無効にすることはできますか?
プロジェクトを同じソリューション内でホストすることはできません。プロジェクトのサイズと複雑さのために、アセンブリ参照を使用する必要があります。
c# - ワークステーションで Visual Studio のプロジェクト参照が突然機能しなくなる
いくつかの参照を含む解決策がありますが、今日 Visual Studio を開いたときにそれらのいくつかが機能しなくなりました。私が得るビルドエラーは次のとおりです。
タイプ 'ReferenceType' を含むアセンブリ 'ReferenceName、Version=X.0.0.0、Culture=neutral、PublicKeyToken=XXXXXXXXXXXX、Retargetable=Yes' に参照が必要です。プロジェクトに 1 つ追加します。
影響を受けた参照のプロパティを確認したところ、説明とローカル ファイルパスの値が空白になりました。さらに、これらは .NET 参照でしたが、COM 参照として扱われていました。
参照を削除して再度追加しようとしましたが、参照の 1 つに Visual Studio のエラー メッセージが表示されます。
参照 "Reference.ocx" を追加できません。ファイルにアクセスできること、および有効なアセンブリまたは COM コンポーネントであることを確認してください。
私が抱えている別の問題は、再追加された参照が元の参照と同じ方法で再追加されないことです。相互運用性が除外される前に、参照名のファイル名に「相互運用性」が含まれるようになりました。追加された参照はコンパイルできますが、まだ正しく機能していないようです。
問題は、同じソリューションの複数のバージョンがあることです。以前のバージョンと古いバージョンを Visual Studio にロードすると、まったく同じ参照の問題が発生します。しかし、Visual Studio を搭載した他のマシンでは、読み込まれたプロジェクトは正常にビルドおよびコンパイルされます。だから、私の問題を引き起こしているのは、私のワークステーションに特に起こったことのようです。また、コンパイルできる別のソリューションもありますが、参照呼び出しで例外が発生するため、正しく機能しません。
フォーラムで見つけたエラー メッセージに関連するすべての提案を検索して試しましたが、成功しませんでした。これらの問題の原因となっている参照キャッシュはありますか?
visual-studio - Visual Studio 拡張機能でクリックされた参照を確認する
プロジェクト内の参照の右クリック (コンテキスト) メニューに要素を追加する Visual Studio 拡張機能を開発しています。Group
これは、 の親で を定義することによって行われIDM_VS_CTXT_REFERENCE
ます。
クリックされた参照に応じてメニュー要素を表示/非表示にしたいので、メニュー項目を次のように定義しますOleMenuCommand
。
メソッドの実装に問題がありCommandVisible
ます。例として、参照の名前が で始まる場合にメニューを表示したいとしましょうA
。どうすればいいですか?
任意の ID、GUID、および存在しない/理解できないドキュメントにやみくもにつまずく相互運用地獄に閉じ込められているように感じます。
参照が含まれているプロジェクトを参照の id として掘り出すことができましたIVsProject
が、呼び出しGetMkDocument
ても何も返されません (プロジェクト内のファイルでは機能しますが、参照では機能しません)。
どうすればいいですか?これを行う方法に関するドキュメントはどこにありますか?
c# - プロジェクト参照の追加 FROM .csproj TO .wixproj
複数の C# プロジェクトと WiX プロジェクトを含む Visual Studio 2010 ソリューションがあります。MSBuild を使用してプロジェクトをビルドしているため、プロジェクト参照を通じてビルド順序を指定しています。ビルド順序の参照は、ソリューション ファイルでのみ機能するため、使用できません。
次の問題があります: WiX プロジェクトの後にビルドしたい C# プロジェクトを追加しようとしています。そのため、csproj からバンドル wixproj にプロジェクト参照を追加しようとしています。ただし、次のエラーが発生します。
.MSI 出力を使用して wix プロジェクトへの参照を追加しようとすると、「'installerproj' への参照を追加できませんでした。参照するには、アセンブリに 'dll' または 'exe' 拡張子が必要です。」-> これらの参照を追加できません。
exe 出力 (バンドル) を使用して wix プロジェクトへの参照を追加しようとすると:ソリューションがリロードされるまで、正しく動作しない可能性があります。」-> リロードしても解決せず、ビルドでも同様のエラーが発生します (「致命的なエラー CS0009: メタデータ ファイル 'installeroutput.exe' を開けませんでした -- 'プログラムを正しくない形式でロードしようとしました。'」) .
そのため、.msi 出力の wixproj への参照を追加できなくても問題はありませんが、バンドルに参照を追加できるようにしたいと考えています。これは可能ですか?
.wixproj 間の参照は正常に機能し、.wixproj から .csproj への参照も機能することに注意してください。その逆ではありません。
C# プロジェクトが wix バンドル プロジェクトの後にビルドされることを確認する別の方法がある場合は、それも使用できますが、MSBuild コマンド ラインと .sln の両方から動作する必要があります。
visual-studio-2015 - プロジェクト参照と参照 - C# RuntimeBinding の違い?
ここ数日、プロジェクトのリファクタリングに費やしてきました。このプロジェクトでは、Dapper と SqlMapper 機能を使用して、Sql クエリの結果をオブジェクトにマップします。リファクタリングの一環として、いくつかのオブジェクトを別のアセンブリに移動しましたが、そこで少しおかしくなりました。
これにより、'QueryAsync<>' が SqlMapper のメンバーではないことを示す RuntimeBinder 例外がスローされ続けました。これは、6 か月以上問題なく使用されているコードです。
私はついに問題を突き止めました。他の人からの考えに感謝します。「解決策」は、「HL7Control」を含むアセンブリへのプロジェクト参照をブラウズ参照に置き換えることです(つまり、プロジェクトファイルに<Project Reference Include...>
なります。<Reference Include...>
このソリューションは vs2015 によって構築されており、.NET4.0 を対象とする新しいアセンブリを除いて、.NET4.6 を対象としています。
「修正」を理解できないと嬉しくないので、どんな考えでも大歓迎です。
ありがとう。
更新 1. いくつかの詳細情報。agentList は名前が悪いだけでなく、実際にはクラスであることを忘れていました。
そして、RuntimeBinder が関与するのは、Param が動的であるためです。これで、動的はアセンブリの境界を越えないことがわかりました。これは、このリファクタリング中に対処しなければならなかった別のことです。ただし、この場合、DapperStatementは別のアセンブリで定義されていますが、オブジェクト インスタンスはアセンブリの境界を越えていません。そして、DapperStatement は常に、それが使用されている別のアセンブリにありました。
また、 SqlMapper.Query<> は常に機能するため、明らかに非同期であることがこれの要因であることに注意してください。
また、マシンを一晩再起動し、最初から再構築しましたが、問題は残ります。
ああ、新しいアセンブリを .NET4.6 に変更しても何も変わりません (それが開発されている外部クライアント プロジェクトを壊す以外は、笑)。
更新 2。 問題は Dapper に固有のようです。さらに説明するには、もう少し詳しく説明する必要があります。最初は、複数のプロジェクトで 1 つのソリューションを使用していました。これらのプロジェクトの 1 つ (プロジェクト A) では、Dapper を使用していくつかの SQL テーブルにアクセスして操作しました。その後、他のいくつかのプロジェクトがそれに依存していました。
その間、別の外部プロジェクトが同じテーブルにアクセスする必要がありましたが、DevExpress XPO を使用していました。そこで、私が今週行ったことは、テーブルが XPO によってアクセスされないようにすることです。元の Dapper コードははるかに多くのテーブル作業を行うため、外部プロジェクトが必要とするものだけをハイブすることにしました。これで、Dapper を使用して SQL データベースを操作する 2 つのアセンブリが残ります。私が見ている問題は、そのシナリオでは、ブラウズ参照ではなくプロジェクト参照を使用すると、問題が発生することです。
今朝、新しいプロジェクトから Dapper リファレンスを削除したところ、突然古いコードがブラウザー リファレンスで再び機能するようになりました (ハッキングしなければならなかった呼び出しを避ける限り)。