2

私はdllを持っています。そのdllはサーバーにアップロードされます。アプリケーションがサーバーから「最新の」dllの取得を開始するたびに必要なので、app.configで次のコードを使用しました。なぜ機能しないのですか?

これがapp.configファイルです:

<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="ReflectionTest"
            publicKeyToken="f94c9b9f0707ee96"
                culture="neutral" />
            <codeBase version="1.0.0.0"                   
                href="http://127.0.0.1/ReflectionTest.dll"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
</configuration>
4

2 に答える 2

1

まず、間違った方向に進んでいる可能性があります。バージョンを変更していなくても、アプリケーションはアセンブリの古いコピーを使用することになる場合があります。

要素に有効な URI があると仮定すると、<codebase>アプリケーションが初めて実行されるとき、ランタイムはコードベースをプローブするまでアセンブリを見つけません。次に、アセンブリを GAC にダウンロードします。アプリケーションが再度実行されると、ランタイムは GAC でそのアセンブリを見つけるので、プローブする必要はありません。

を使用する代わりに<codebase>、Reflection を使用することを検討してください。Assembly.LoadFrom(assemblyUri)具体的には、アプリケーション設定から URI を取得して、アプリケーションで使用したい場合があります。そこから、Reflection API、特に を使用してオブジェクトを作成しますActivator.CreateInstance<T>()

サーバーからアセンブリを取得することに関しては、DLL が正しい場所にあり、Web サーバーが実行され、適切に構成されていることを確認してください。

于 2009-05-01T18:55:06.593 に答える