Visual J# não está trabalhando no .NET 4
Pergunta
Tentei converter um projeto que depende do tempo de execução do VJS para o VS2010, mas ele erra ao tentar executar.
Está dando o erro que "Não foi possível carregar arquivo ou montagem 'vjslib' ou uma de suas dependências. Foi feita uma tentativa de carregar um programa com um formato incorreto."
Reinstalei o tempo de execução do VJS, mas não parecia ajudar.
Existe alguma maneira de obter o .NET 4 para trabalhar com isso?
Solução
Solução muito simples - Chamando J# Código do .NET 4.0
Você assume o controle e o carrega primeiro fornecendo um caminho explícito. Então, da próxima vez que for necessário, já conhece o caminho (ou já está carregado no AppDomain).
Você precisará usar a função Loadlibrary; portanto, importe a referência Pinvoke:
[DllImport("kernel32", SetLastError = true)]
static extern IntPtr LoadLibrary(string lpFileName);
A função ON ON (principal no console/winforms ou no global.asax application_start):
if (Environment.Version.Major >= 4)
{
string folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"..\Microsoft.NET\Framework\v2.0.50727");
folder = Path.GetFullPath(folder);
LoadLibrary(Path.Combine(folder, "vjsnativ.dll"));
}
Outras dicas
Eu baixei o Microsoft Visual J# versão 2.0 pacote redistribuível de http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712 e instalou -o. O problema é resolvido.
Consegui que isso funcione copiando C: Windows Microsoft.net Framework V2.0.50727 vjsnativ.dll (para 64 bits Microsoft.net Framework64 V2.0.50727 vjsnativ.dll) para a depuração do meu aplicativo/liberação .
Suspeito que a Microsoft precise lançar outro pacote redistribuível J# para trabalhar com o .NET 4.0. Enquanto isso, este trabalho de trabalho faz um bom trabalho.
A única maneira de fazer funcionar era copiar o C: Windows Microsoft.net Framework V2.0.50727 vjsnativ.dll para a pasta C: Windows Microsoft.net Framework V4.0.30319. Ver http://community.microfocus.com/borland/managetrack/starteam/w/knowledge_base/17108.error-unable-to-load-dll-vjsnative-speci-sodule-se-não-BE-BE-Found-Exception- From-HRESULT-0X8007007E.ASPX
Para adicionar às respostas existentes, descobri que as soluções não funcionavam para mim.
A primeira coisa que fiz foi reparar o Microsoft Visual J# 2.0 Pacote redistribuível -se (x64) Usando o painel de controle do Windows (basta clicar com o botão direito do mouse e clique em reparo). Isso foi, caso eu tenha causado algum dano nas minhas tentativas anteriores de resolver o problema.
Eu já havia implementado a solução fornecida por David Thielen.
1 Etapa extra fechou o acordo para mim (resolveu o problema): copie "vjscor.dll", "vjslib.dll" e "vjsnativ.dll" de C: Windows Microsoft.net Framework64 V2.0.50727 Para C: Windows Microsoft.net Framework V2.0.50727
Então, basicamente, o pacote da Microsoft colocou as DLLs corretas na estrutura .NET de 64 bits e eu tive que movê-las manualmente para a pasta de 32 bits, que é então copiada na minha pasta de solução pela solução de David Thielen (acima).