Pergunta

Eu tenho um dll. Essa dll é carregado em um servidor. Eu quero que cada vez que o aplicativo é iniciado para obter o "mais recente" dll a partir do servidor, então eu usei o seguinte código no meu app. Por que ele não está funcionando?

aqui é o arquivo 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>
Foi útil?

Solução

Em primeiro lugar, você pode estar no caminho errado. Mesmo se você não mudar a versão, o aplicativo pode acabar usando uma cópia mais antiga do conjunto.

Assumindo um URI válido em seu elemento <codebase>, quando seu aplicativo é executado pela primeira vez, o tempo de execução não vai encontrar o conjunto em até que investiga sua base de código. Em seguida, ele irá baixar o assembly no GAC. Quando seu aplicativo é executado novamente, o tempo de execução vai achar que assembly no GAC, por isso não terá de tentar encontrá-la.

Em vez de usar <codebase>, considere o uso de reflexão. Especificamente, você pode querer usar Assembly.LoadFrom(assemblyUri) em sua aplicação, ficando a URI de uma configuração de aplicativo. De lá, você criar objetos usando a API Reflection, particularmente usando Activator.CreateInstance<T>().

Como para obter que a montagem do seu servidor está em causa, certifique-se de que sua DLL está no local certo e que seu servidor web está em execução e configurado corretamente.

Outras dicas

é seu .dll realmente disponível naquele local? Você está servindo-lo através de algum aplicativo web?

Se você digitar a URL em um navegador web, isso permitirá que você baixar ou abrir esse arquivo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top