問題タブ [early-binding]
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 - 参照されるアセンブリの複数のバージョン間の自動切り替え
1つのC#WinFormsプロジェクトを含むソリューションからEmguCVを参照する必要があります。
同じライブラリには4つのバージョンがあります。つまりx86vとx64で、それぞれGPUサポートがある場合とない場合があります。ライブラリには、EmguCVのマネージDLLとOpenCVのアンマネージDLLへの参照が必要です。[Bin]
ビルド後のイベントを使用すると、管理されていない正しいバージョンをフォルダーにコピーするのは簡単です。
コードを介して管理対象参照を簡単に切り替えられるようにしたいと考えています。たぶん次のようなものです:
コンパイル時に(遅延バインディングではなく)これらのアセンブリを参照しているので、?の値に基づいてプログラムでバージョンを切り替える方法はあり[EmguCvTarget]
ますか?
outlook - Outlook mailitem.save メソッドの遅延バインディングの問題
別のメールの内容を使用してメールを再作成する機能があります (Outlook Redemption ライブラリを使用)。アーリー バインディングへの変換はほぼ完了しましたが (vb.net で Option Strict ON を使用しています)、Visual Studio 2010 では .save および .move の行に下線が引かれ、「option strict on では遅延バインディングが許可されません」というエラーが表示されます。
コードは次のとおりです。
他の遅延バインディング エラーを解決したので、2 つのメソッドが問題としてフラグを立てている理由がわかりません。
ルイスを助ける
dynamics-crm-2011 - CRM 開発 - 複数の組織をサポートするアーリー バインド アプローチ
複数の CRM システムとの通信をサポートする C# で CRM ライブラリ (マネージャー) を開発したい場合、問題に直面しています。つまり、複数の CRM インスタンスを同時に実行している場合 (たとえば、2 つの異なる組織) )。
CRM ライブラリの要件:
遅延バインドではなく事前バインドを使用する (型の安全性のため)
一人のマネージャーを通じて、より多くの CRM システム (組織) と通信できる
すべての CRM システム (組織) で使用される 1 つの操作 (コードの重複を避ける) に対して 1 つの方法のみ - 生成されたエンティティ ファイルを解析するためのユーティリティ (crmsvcutil ツール) を組織ごとに作成する必要があります。解析の結果は、エンティティ ファイルで定義されたエンティティのインターフェイスと部分クラスのリストになります。インターフェイスは、IAccountNumber など、含まれる属性に従って部分クラスで実装されます。インターフェイスには 2 つのグループがあります。最初のグループは、両方の組織で共通のエンティティ属性用です。たとえば、インターフェイス ICrmAccount は、AccountNumber、Name、Address1 属性などを定義します。 . インターフェイスの 2 番目のグループは、エンティティに固有であり、すべての CRM システム (組織) のエンティティには存在しない属性用です。
2 つの異なる CRM システムと通信できるソリューションを設計しましたが、特定のアカウントに対して実装されたインターフェイスを使用することはできません。コードのコメントを含む同封のソリューションを参照してください。
解決策は次の場所にあります。
解決策の説明:
CRM_BusinessLogic - 通信のためのすべてのメソッドを保持し、コンストラクターで正しいデータ コンテキストを初期化する CRMManager が含まれています。
CRM_Interfaces - エンティティ ファイルの解析の結果として生成されたすべてのインターフェイスが含まれます (これは別の解析ツールで行う必要があります)。現在は、両方のデータ コンテキストで実装されているエンティティを含む iCRMContext と、両方のデータ コンテキストで実装されているエンティティを含む iCRMContext の両方に共通の 1 つの属性のみを保持する iCRMAccount のみが含まれています。現在、両方のコンテキストが同じエンティティ Account を実装しています。
CRM_SCEurope - 最初の CRM 組織 SC Europe 用に生成されたエンティティ ファイル - SCEuropeEntities.cs、解析ツールによって生成されたデータ コンテキスト (組織コンテキストに存在するエンティティに応じてインターフェイスのリストを実装) - SCEuropeContext_generated および SCEuropeContext.cs が含まれ、正しい組み立て
CRM_SoSW - CRM_SCEurope と同じ内容で、2 番目の CRM 組織に関連するデータが含まれています。
CRM_Test - 両方の組織と通信するテスト コンソール アプリが含まれています
同封のソリューションには、設計されたソリューションの基本的なテストには十分な名前パラメーターのみを持つ Account エンティティのみが含まれていることに注意してください。
重要: プロジェクトを実行する前に、Program.cs ファイル (CRM_Test プロジェクト) でマネージャーの資格情報を設定する必要があります。
アカウント データが、実装されたインターフェイス iCRMContext で生成された部分クラス (SoSwContext、SCEuropeContext) を使用して CRM から読み込まれるかどうかを見ることができるように、アプリケーションは例外「Invalid 'where' condition. An entity member is invoking an invalid property or method. - メソッドの実装を参照してください。".
誰かが例外を解決する方法を見つけてくれれば幸いです。
ありがとう
パベル
dynamics-crm-2011 - CRM 2011 プラグインで InvalidCastException を引き起こす ServiceContext (アーリー バインド) 取得
私の質問はこの投稿にかなり関連していますが、すべてのピースをまとめることはできません。以下に示すように、プラグインコードのLinqを介して、 ServiceContextオブジェクトSystemUser
を使用してフェッチしようとしています:XrmServiceContext
しかし、私は以下を取得していますInvalidCastException
:
タイプ 'Microsoft.Xrm.Sdk.Entity' のオブジェクトをタイプ 'Xrm.SystemUser' にキャストできません。
一方、生成されたアーリー バインド クラスCrmSvcUtil
は別のアセンブリ (プラグイン アセンブリ以外) に配置されます。
生成されたアーリー バインド クラスをプラグイン アセンブリ内に配置すると、正常に動作するため、これは非常に奇妙です。
私の小さな調査により、別のOrganizationServiceProxy
オブジェクトを作成するようになりましたが、既にIOrganizationService
使用して作成しているのに、なぜ作成する必要があるのですかserviceFactory.CreateOrganizationService(context.UserId)
では、生成されたコードをプラグイン アセンブリの外に置いて、この問題を解決するにはどうすればよいでしょうか。
java - 早期バインディングではないのはなぜですか?
これは遅延バインディングの例ですが、このコードをコンパイルしてから cavaj を使用して逆コンパイルすると、このコード ab.java が見つかりました。
遅延バインディングの場合、コンパイラは display() メソッドが c class からのものであることを知っている必要はありませんが、ここで
は mn=new c();を置き換えるため知っています。cで
c1 = new c(); 、これは早期バインディングですか??
python - cx_freeze と win32com で ealry-binding を強制する方法は?
外部 CATIA アプリケーションを制御するために、いくつかの Python スクリプトを作成しました。これらのスクリプトを実行可能ファイルにパッケージ化する必要がありますが、それを行うことができません。
質問 :
スクリプトがビルドされたら、win32com が特定のモジュールに対して早期バインディングを使用するように強制するにはどうすればよいですか?
詳細 :
私のスクリプトは、 win32com.clientモジュールを使用して CATIA アプリケーションを制御します。参照入出力引数を持つ関数を含むモジュールCATIA V5 SpaceAnalysisInterfaces Object Libraryを除いて、レイト バインディングで CATIA を処理します。これにはアーリー バインディングを使用します。悲しいことに、 MakePyの単純な使用では十分ではありませんでした。入力/出力引数から正しい動作を取得するために、 win32com.gen_pyパッケージから生成されたソースを変更する必要がありました。Pythonスクリプトを実行すると正常に動作するようになりました。しかし、py2exeまたはcx_freezeのいずれかを使用してそれらをビルドすると、実行可能ファイルは遅延バインディングのみを使用するため、悪い結果が得られます。
CATIA アプリケーションをフックしてその API を使用する方法は次のとおりです。
cx_freezeを使用したビルド スクリプトは次のとおりです。
このビルド スクリプトは、実際のwin32com.gen_pyモジュールのコンテンツを含む一連のファイルを生成するので、動作するはずです。しかし、ファイルを実行すると、遅延バインディングのみが使用されます。py2exeを使用したときにファイルが正しく追加されているかどうかを確認できませんでしたが、動作はまったく同じです: late bind !
この投稿を見ましたが、私の問題は異なります。モジュールは正しくコピーされ、スクリプトは例外を発生させません。入出力関数が正しく機能しません。
どんな助けでも大歓迎です。
.net - .net com dll を呼び出すときに VB6 コンパイラに事前バインディングを強制的に使用させる
C# で記述された com dll があります。 Regasm を実行した後、com dll を参照して VB6 からこの dll を呼び出すことができます。VB6 では、インテリセンスを利用できます。
ただし、F5 キーを押してコンパイルしても、コンパイラは com dll の呼び出しの間違いを検出しません。遅延バインディングを使用している必要があります。
早期バインディングを使用するにはどうすればよいですか?
インターフェイスが宣言されている
メインクラスが宣言されています
[アップデート]
VB6 プロジェクトでは、作成した tlb ファイルを参照します。
VB6では、次を使用してオブジェクトを作成します
vba - 埋め込み Word ドキュメントでの遅延バインディングと事前バインディング
埋め込みドキュメントを古いバージョンの MS Office で実行する際に問題が発生しています。問題はオブジェクトの宣言方法にあると思いますが、遅延バインディングを使用して埋め込みドキュメントを宣言する方法がわかりません (私はまだこの概念と vba の両方に非常に慣れていません)。以下は、コードのスニペットとともに変数宣言を現在どのように行っているかです。Excel 2013 では問題なく動作しますが、2010 では変数を宣言した方法が原因で動作しません (私は信じています)。
oDoc と oTemplate を「オブジェクトとして」設定しようとしましたが、それらを単語オブジェクトにリンクする方法がわかりません。これを行うと、PasteAndFormat 呼び出しの "wdFormatOriginalFormatting" でライブラリ参照が失敗するだけでした。
私はこれを理解しようとして髪を引き裂いてきました。どんな助けでも大歓迎です。ありがとう!