Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

MSBuild error: module could not be found #8

Closed
zackdouglas opened this issue Jun 3, 2015 · 16 comments
Closed

MSBuild error: module could not be found #8

zackdouglas opened this issue Jun 3, 2015 · 16 comments
Assignees
Labels

Comments

@zackdouglas
Copy link

When trying to run this from the VS context menu, I get the following error from VisualStudio:

Cannot load V8 interface assembly. Load failure information for v8-ia32.dll:
  C:\Users\me\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\uo5tep2b.ksb\v8-ia32.dll:
    The specified module could not be found
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\v8-ia32.dll:
  The specified module could not be found

Sure enough, I don't have that DLL. I had hoped that the NuGet package would fail if I were missing a dependency. To be clear, I'm attempting to use this for a single-page-app, not for Node.JS; though, I do have Node.JS installed on the host machine, not coming from NuGet/VisualStudio.

@benquarmby
Copy link
Owner

Thanks for the report. I can see you're using Visual Studio 2012. Can you please tell me which version of JSLint.NET for Visual Studio you have installed?

Edit: I just downloaded and unzipped the latest .vsix from the Visual Studio Gallery, and v8-ia32.dll is definitely in there. If you haven't already, please try uninstalling and reinstalling JSLint.NET, but not before we find out which version it is.

@zackdouglas
Copy link
Author

[W]hich version of JSLint.NET for Visual Studio [is] installed?

1.8.2

Reinstalling didn't fix the issue. 😢


Update: I do have the v8-ia32.dll file as part of the extension package, but it is not in the location specified in the runtime error.

@benquarmby
Copy link
Owner

Unfortunately I still haven't been able to reproduce this. In the mean time, I recommend switching to the NuGet package if you can. While it's not as feature rich as the VS extension, it's extremely stable.

@zackdouglas
Copy link
Author

Thanks for checking in, Ben! Feel free to close this for now. If I get back to using the VS extension and still have problems, I'll reopen this (or make a new one if the versions change).

Cheers!

@phillhutt
Copy link

I get the same error message when I try to run JSLint from the context menu.
I have tried uninstalling and reinstalling but that did not help. I also tried the newest beta version, but that also did not help.
I can also see that the v8-ia32.dll is part of the extension package, but that it is not in the location that it seems to be expecting it in (C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE)
Manually putting that file there did not help.

@benquarmby
Copy link
Owner

Thanks for the report. Sounds like the problem is a bit more wide-spread.

It's definitely something to do with the ClearScript V8 references, but I'm not sure why it isn't working for Visual Studio. The NuGet package uses exactly the same references in exactly the same way.

Can you please confirm that there are two error messages along the lines of "The specified module could not be found". The first one points to a location like C:\Users\me\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\uo5tep2b.ksb\v8-ia32.dll, and the second one C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\v8-ia32.dll?

Are you using Visual Studio 2012?

@phillhutt
Copy link

Yes, I am running VS 2012.
Here is the exact message I get:

Cannot load V8 interface assembly. Load failure information for v8-ia32.dll:
C:\Users\phutton\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\r2ohpten.ip1\v8-ia32.dll: The specified module could not be found
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\v8-ia32.dll: The specified module could not be found

Thanks.

@benquarmby
Copy link
Owner

I managed to replicate the error, but only by manually mismatching the V8 libraries with the version of ClearScript (i.e. 5.4.1 vs 5.4.2). This is not something that should be happening in release, and I've verified the packages that are currently online are in sync.

So, a few more things to check:

  • What is the size of C:\Users\phutton\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\r2ohpten.ip1\v8-ia32.dll? It should be 3,939,328 bytes for v1.8.3 or 4,195,328 bytes for v2.0.0-beta6.
  • Do you have both the Visual Studio extension and NuGet package installed? If so, are they the same version?

@benquarmby
Copy link
Owner

OK, I think I've gotten to the bottom of it. Seems to be specific to Visual Studio 2012 and the VC libraries.

I'll have a new version of the beta to try soon.

@benquarmby
Copy link
Owner

@zackdouglas and @phillhutt: Please try JSLint.NET 2.0.0-beta7. I've switched to wiring up V8 manually which I believe will fix the issue for you. Let me know how it goes.

@phillhutt
Copy link

I have installed 2.0.0-beta7 but I am still getting the error.
To answer your previous questions in case it helps:

  • My v8-ia32.dll file is 4,195,328 bytes
  • I do not have the jslintnet for VS NuGet package installed, but I do have the jslintnet NuGet for MS Build installed. Version 1.6.3

@benquarmby
Copy link
Owner

That's great information. Thanks for following up.

I believe there is a conflict between VS and MSBuild. Please update the NuGet package from 1.6.3 to 2.0.0-beta7. You will need to "Include Prerelease" to see it in the Manage NuGet Packages dialog.

Restart Visual Studio and the errors should be gone.

@phillhutt
Copy link

Today I tried updating my jslintnet NuGet for MS Build from 1.6.3 to 1.8.3. I got the same error that I was getting from the VS extension. But this has a some stack also. Perhaps it will help. See below.
We are not ready to upgrade to version 2 yet as the new JSLint introduces many many errors that we will need to deal with first.
When doing a command line build I get a message box with this error "The program can't start because MSVCR120.dll is missing from your computer. Try reinstalling the program to fix this problem.".
Then I this output in my command prompt:
The "JSLintTask" task failed unexpectedly. System.TypeLoadException: Cannot load V8 interface assembly. Load failure information for v8-ia32.dll:E:\Projects-Nightly\RMSaaS\contrib\assemblies\NuGet\packages\JSLintNet.MSBuild.1.8.3\tools\v8-ia32.dll: The specified module could not be found C:\Windows\Microsoft.NET\Framework\v4.0.30319\v8-ia32.dll: The specified module could not be found at Microsoft.ClearScript.V8.V8Proxy.LoadNativeLibrary() at Microsoft.ClearScript.V8.V8Proxy.LoadAssembly() at Microsoft.ClearScript.V8.V8Proxy.GetAssembly() at Microsoft.ClearScript.V8.V8Proxy.GetImplType(Type type) at Microsoft.ClearScript.V8.V8Proxy.CreateImpl[T](Object[] args) at Microsoft.ClearScript.V8.V8IsolateProxy.Create(String name, V8RuntimeConstraints constraints, Boolean enableDebugging, Int32 debugPort) at Microsoft.ClearScript.V8.V8Runtime..ctor(String name, V8RuntimeConstraints constraints, V8RuntimeFlags flags, Int32 debugPort) at Microsoft.ClearScript.V8.V8ScriptEngine..ctor(V8Runtime runtime, String name, V8RuntimeConstraintsconstraints, V8ScriptEngineFlags flags, Int32 debugPort) at JSLintNet.Abstractions.AbstractionFactory.CreateJavaScriptContext() at JSLintNet.JSLintContext..ctor() at JSLintNet.JSLintFactory.CreateContext() at JSLintNet.JSLintTask.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()

@phillhutt
Copy link

It looks like I have solved my problem. I installed the error "The program can't start because MSVCR120.dll is missing from your computer. Try reinstalling the program to fix this problem." lead me to install the 2013 C++ runtime redistributable package (x86). I had the x64 one, but not x86.
Now I am able to run both the MSBuild and VS JSLint.NET.

@benquarmby
Copy link
Owner

Aha, so it's the VC++ runtime. That's fantastic information @phillhutt, thank you. I was under the impression ClearScript depended on the 2012 version, but that's obviously not the case. I'll see if there is some way I can bundle it into the package.

@benquarmby
Copy link
Owner

I've spent most of today investigating this issue. It turns out the only reasonable way to ensure ongoing Visual Studio 2012 support without requiring the VC2013 libraries is to downgrade ClearScript V8. Thankfully I didn't have to go very far back to restore VS2012 compatibility. All the tests are passing so I'm confident we haven't lost anything.

So there will be one more release on the v1.x line of JSLint.NET to fix this issue, and then it'll be full steam ahead with v2.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants