我尝试将依赖于vjs运行时的项目转换为vs2010,但在尝试运行时出错。
它给出了“无法加载文件或程序集'vjslib'或其依赖项之一的错误。试图加载格式不正确的程序。”
我重新安装了vjs运行时,但它似乎没有帮助。
有没有办法让.net 4使用它?
答案 0 :(得分:19)
非常简单的解决方案 - Calling J# code from .NET 4.0
您先控制并加载它,然后提供显式路径。然后下次需要它时,它已经知道了路径(或者它已经在AppDomain中加载了)。
您需要使用LoadLibrary函数,因此请导入pinvoke参考:
[DllImport("kernel32", SetLastError = true)]
static extern IntPtr LoadLibrary(string lpFileName);
on load(Console / WinForms中的Main函数或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"));
}
答案 1 :(得分:5)
我已从http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712下载了Microsoft Visual J#Version 2.0 Redistributable Package并安装了它。问题已解决。
答案 2 :(得分:3)
我通过将C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjsnativ.dll(对于64位Microsoft.NET \ Framework64 \ v2.0.50727 \ vjsnativ.dll)复制到我的应用程序的调试来实现此功能/ release目录。
我怀疑微软需要发布另一个j#可再发行组件才能与.net 4.0一起使用。同时,这种解决方法做得很好。
答案 3 :(得分:0)
我能让它工作的唯一方法是将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
答案 4 :(得分:0)
为了增加现有答案,我发现这些解决方案并不适用于我。
我做的第一件事是使用Windows控制面板修复 Microsoft Visual J#2.0可再发行软件包-SE(x64)(只需右键单击并单击修复)。这是因为我之前尝试解决问题所造成的任何损害。
我已经实施了David Thielen提供的解决方案。
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将其复制粘贴到我的解决方案文件夹中解决方案(上)。