visual j#在.net 4中不起作用

时间:2010-04-13 18:13:13

标签: .net-4.0 j#

我尝试将依赖于vjs运行时的项目转换为vs2010,但在尝试运行时出错。

它给出了“无法加载文件或程序集'vjslib'或其依赖项之一的错误。试图加载格式不正确的程序。

我重新安装了vjs运行时,但它似乎没有帮助。

有没有办法让.net 4使用它?

5 个答案:

答案 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将其复制粘贴到我的解决方案文件夹中解决方案(上)。