Visual j # не работает в .net 4
Я попытался преобразовать проект, который полагается на время выполнения vjs, на vs2010, но при попытке запуска он не работает.
Это указывает на то, что "Не удалось загрузить файл или сборку" vjslib "или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом."
Я переустановил среду выполнения vjs, но, похоже, это не помогло.
Есть ли способ получить доступ к .net 4 для этого?
Ответы
Ответ 1
Очень простое решение - Вызов J # -кода из .NET 4.0
Вы берете управление и загружаете его, сначала предоставляя явный путь. Затем, в следующий раз, когда он понадобится, он уже знает путь (или он уже загружен в AppDomain).
Вам нужно будет использовать функцию LoadLibrary, поэтому импортируйте ссылку pinvoke:
[DllImport("kernel32", SetLastError = true)]
static extern IntPtr LoadLibrary(string lpFileName);
Нагрузка (либо основная функция в консоли /WinForms, либо в 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"));
}
Ответ 2
Я загрузил Распространяемый пакет Microsoft Visual J # версии 2.0 из http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712 и установил его. Проблема решена.
Ответ 3
Я получил это для работы, скопировав C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vjsnativ.dll(для 64-разрядного Microsoft.NET\Framework64\v2.0.50727\vjsnativ.dll) в мое приложение debug/release.
Я подозреваю, что Microsoft должна будет выпустить еще один пакет j # redistributable для работы с .net 4.0. Между тем, эта работа отлично подходит.
Ответ 4
Единственный способ, с помощью которого я мог работать, это скопировать C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vjsnativ.dll в C:\Windows\Microsoft.NET\Framework\v4.0.30319 папка. См. http://community.microfocus.com/borland/managetrack/starteam/w/knowledge_base/17108.error-unable-to-load-dll-vjsnativ-the-specified-module-could-not-be-found-exception-from-hresult-0x8007007e.aspx
Ответ 5
Чтобы добавить к существующим ответам, я обнаружил, что решения не сработали для меня.
Первое, что я сделал, - это отремонтировать расширяемый пакет Microsoft Visual J # 2.0 -SE (x64) с помощью панели управления Windows (просто щелкните правой кнопкой мыши и щелкните по ремонту). Это было в случае, если я сделал какой-либо ущерб в своих предыдущих попытках решить проблему.
Я уже реализовал решение, предоставленное Дэвидом Тиленом.
1 Дополнительный шаг закрыл сделку для меня (решил проблему):
Скопируйте "vjscor.dll", "vjslib.dll" и "vjsnativ.dll" из C:\Windows\Microsoft.NET\Framework64\v2.0.50727. C:\Windows\Microsoft.NET\Framework\v2.0.50727
Таким образом, в основном пакет Microsoft разместил правильные DLL файлы в 64-разрядной платформе .NET, и мне пришлось вручную переместить их в 32-битную папку, которая затем скопирована в мою папку решений с помощью решения David Thielen (см. выше).