C# プロジェクトで oracle コヒーレンスを使用しています。.Net プロジェクトには Coherence への参照があり、タイプを「注入」することでいくつかの Coherence プロパティを設定します。POF 構成の場合の例の 1 つ:
<user-type>
<type-id>1008</type-id>
<class-name>MyTypeName, MyAssembly, version=1.2.3.4, publicKeyToken=0f73b23f05811dc2</class-name>
</user-type>
バージョンと公開鍵トークンを含むフル ネームを使用してすべてのタイプを指定しても、Coherence はそれを使用せず、MyAssemblyにバインドします。
MyAssemblyが GAC にあり、バインディングが失敗するため、これは私にとって大きな問題です。もちろん、アプリケーションの構成と設定を使用できます。
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="MyAssembly" fullName="MyAssembly,Version=1.2.3.4,publicKeyToken=0f73b23f05811dc2,culture=neutral" />
</assemblyBinding>
しかし、私はそれを避けたいと思います (PowerShell のように、すべてのアプリケーションが app.config を持つことができるわけではありません)。
Oracle ドキュメントhttp://docs.oracle.com/cd/E18686_01/coh.37/e18678/net_intobjects.htm#BABJCBDDで、次のことがわかりました。
class-name 要素内に完全修飾型名を指定する必要はありません。タイプとアセンブリ名で十分です。
しかし、完全修飾名を指定したい場合はどうすればよいでしょうか?
- 編集
私が抱えている新しい問題は、tangosol-coherence.override.xmlにあります。
<security-config>
<identity-transformer>
<class-name>MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral</class-name>
</identity-transformer>
<principal-scope>false</principal-scope>
</security-config>
私が得る例外:
クラス「MyAssembly.IdentityTransformer、MyAssembly、Version=1.2.3.4、publicKeyToken=0f73b23f05811dc2、culture=neutral」のインスタンス化に失敗しまし
た
アセンブリバインディング ログ ビューアー:
WRN: アセンブリの部分バインディング情報が提供されました: WRN: アセンブリ名: MyAssembly、バージョン = 1.2.3.4 | ドメイン ID: 1
アセンブリの呼び出し: Coherence、バージョン = 3.7.1.3、カルチャ = ニュートラル、PublicKeyToken = 0ada89708fdf1f9a。