题
我尝试将一个依赖vjs运行时的项目转换为vs2010,但尝试运行时出错。
它给出的错误是 “无法加载文件或程序集“vjslib”或其依赖项之一。尝试加载格式不正确的程序。"
我重新安装了 vjs 运行时,但似乎没有帮助。
有什么方法可以让 .net 4 来使用它吗?
解决方案
非常简单的解决方案 - 调用J#从.NET 4.0
的代码您采取控制和加载第一供应显式路径。然后需要它的下一次,它已经知道的路径(或它已经装载在应用程序域)。
您将需要使用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"));
}
其他提示
我已从以下位置下载了 Microsoft Visual J# Version 2.0 Redistributable Package: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712 并安装了它。问题已解决。
我得到这个工作通过复制C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ vjsnativ.dll(64位Microsoft.NET \ Framework64 \ V2.0.50727 \ vjsnativ.dll)我的应用程序的调试/ release目录。
我怀疑微软将需要释放另一J#再发行组件包将工作与.NET 4.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-来自-hresult-0x8007007e.aspx
要添加到现有的答案,我发现解决方案并没有为我工作。
我所做的第一件事就是修的微软的Visual J#2.0再发行组件包-SE(64)使用Windows控制面板(只要右击,然后单击修复)。这是在情况下,我做了我以前的努力来解决这个问题的任何损害。
我已经执行由David蒂伦提供的解决方案。
1个的额外步骤完成交易,我(解决了这个问题): 复制从 C “vjscor.dll”, “vjslib.dll” 和 “vjsnativ.dll”:\ WINDOWS \ Microsoft.NET \ Framework64 \ V2.0.50727 为 C:\ WINDOWS \微软.NET \框架\ V2.0.50727 强>
所以基本上微软包放置在正确的DLL到64位.NET框架和我不得不手动将它们移动到其然后复制粘贴到由大卫蒂伦的溶液我的溶液文件夹中的32位文件夹(上文)