10-02-2014 01:38 PM
Hi,
I've been through this issue since almost 2 days and
I'm fed up not getting to a solution.
Here is the problem :
My client has Proligent installed in the Sequential_Modal which is a .NET call (.net 2.0 and 3.5) that is placed after the main sequence call but within the UUTs loop.
My DLL (.net 4.0) which provide statistical data to the end user which is located in the Main sequence within the UUT Loop of the Sequential_Modal loads ReportViewer and WinForms assemblies from the GAC.
When I skip the proligent .net call, everything work as expected but when I run it normally, the first time it works because my .net call gets hit before the Proligent .Net call and the second loop, I get this error :
An exception occurred inside of the call to .NET member 'ShowFPYChartInfos':
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.ReportViewer.WinForms.resources, Version=10.0.0.0, Culture=fr, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Le fichier spécifié est introuvable.
File name: 'Microsoft.ReportViewer.WinForms.resources, Version=10.0.0.0, Culture=fr, PublicKeyToken=b03f5f7f11d50a3a' ---> System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\B11001\Soft\Application\Proligent\TestStand Proligent Bridge\Microsoft.ReportViewer.WinForms.resources.dll' or one of its dependencies. Le fichier spécifié est introuvable.
File name: 'file:///C:\B11001\Soft\Application\Proligent\TestStand Proligent Bridge\Microsoft.ReportViewer.WinForms.resources.dll'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at Averna.TestStandProligentDataBridge.Extractor.currentDomain_AssemblyResolve(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
=== Pre-bind state information ===
LOG: User = VTHFCT1B\administrator
LOG: Where-ref bind. Location = C:\B11001\Soft\Application\Proligent\TestStand Proligent Bridge\Microsoft.ReportViewer.WinForms.resources.dll
LOG: Appbase = file:///C:/Program Files/National Instruments/TestStand 2012/Bin/
LOG: Initial PrivatePath = NULL
Calling assembly : (Unknown).
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: No application configuration file found.
LOG: Using host configuration file:
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Attempting download of new URL file:///C:/B11001/Soft/Application/Proligent/TestStand Proligent Bridge/Microsoft.ReportViewer.WinForms.resources.dll.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark)
at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark)
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
at System.ComponentModel.ComponentResourceManager.ApplyResources(Object value, String objectName, CultureInfo culture)
at Microsoft.Reporting.WinForms.RSParams.InitializeComponent()
at Microsoft.Reporting.WinForms.RSParams..ctor()
at Microsoft.Reporting.WinForms.ReportViewer.InitializeComponent()
at Microsoft.Reporting.WinForms.ReportViewer..ctor()
at Trilliant_Centrica_ConfigUpdate.FPY_Chart.InitializeComponent() in C:\Users\ebonneau.VARITRON\Documents\Visual Studio 2010\Projects\SMALL_REQUESTS\Trilliant_Centrica_ConfigUpdate\Trilliant_Centrica_ConfigUpdate\FPY_Chart.Designer.cs:line 31
at Trilliant_Centrica_ConfigUpdate.FPY_Chart..ctor() in C:\Users\ebonneau.VARITRON\Documents\Visual Studio 2010\Projects\SMALL_REQUESTS\Trilliant_Centrica_ConfigUpdate\Trilliant_Centrica_ConfigUpdate\FPY_Chart.cs:line 18
at Trilliant_Centrica_ConfigUpdate.OnTheFly_Stats.ShowFPYChartInfos() in C:\Users\ebonneau.VARITRON\Documents\Visual Studio 2010\Projects\SMALL_REQUESTS\Trilliant_Centrica_ConfigUpdate\Trilliant_Centrica_ConfigUpdate\OnTheFly_Stats.cs:line 39
I can notice that the searching directory is the folder of the Proligent .net Assembly and not the GAC.
I Tried reinstalling Teststand and Proligent and it didn't work.
I compared the station to another identical WORKING station using the same things and no difference at all.
I can't seem to figure out what is the root cause of this behavior, can someone help?
Thanks
Eric
10-03-2014 05:26 PM
Hi JTTest1997,
You mentioned an identical working system. In what ways are these setups different? Computer, O/S, TestStand version, .NET versions, library/file locations, etc. Has this system ever operated as expected? Or are you setting up a brand new machine with this sequence? Give us a bit more detail and we'll see if we can figure this out. Thanks!
10-06-2014 07:23 AM
Two identical hardware / software machine.
We have the same teststand sp1 f1 2012 on each and have windows xp.
My doubt is that the integrity of the computer is corrupted and that I should consider reinstalling everything at this point because the other identical computer is working.
.... I'll try this and post back the result
10-06-2014 09:44 AM - edited 10-06-2014 09:46 AM
I noticed the assembly is for the French culture. Could it be that on one machine the default culture for the OS is set to French and on the other it is not?
Perhaps the French version of Microsoft.ReportViewer.WinForms.resources is not installed on the machine.
-Doug
10-08-2014 09:01 PM
I can confirm that the working platform is english windows XP and the non-working platform is french windows xp that's the only difference I can see and that all frameworks are language related I guess!.... So thinking this way, I could focus on reinstalling and english XP that could be the root cause... I had a similar problem and french language was the problem but I can't explain why...
10-08-2014 09:04 PM
Are you saying that Microsoft.ReportViewer.WinForms.resources english package would be installed on the french OS system and that could lead to problems?
I'll try to verify the language of the package.. on the machine having problem.
.. Give me your input in order to clarify what you are saying please!!
Thanks,
Eric
10-09-2014 08:31 AM - edited 10-09-2014 08:37 AM
@JTTest1997 wrote:
Are you saying that Microsoft.ReportViewer.WinForms.resources english package would be installed on the french OS system and that could lead to problems?
I'll try to verify the language of the package.. on the machine having problem.
.. Give me your input in order to clarify what you are saying please!!
Thanks,
Eric
Yes. The error you are getting indicates that the French version of Microsoft.ReportViewer.WinForms.resources is missing. The way localization is typically done in .NET is that there are separate satellite assemblies for each culture supported with the resources for that culture translated as needed. On the French OS it would expect to find the French version of that satellite assembly and is perhaps not finding it because it's not installed. Normally there should be a fallback assembly if the specific culture one does not exist, but perhaps that one isn't installed either. Perhaps only the english one is installed.
Rather than re-installing the OS, you could use the Region and Language control panel of the OS to set the OS to "English (United States)" (you might have to reboot afterwards, not sure). Then try running your program. Or see if you can get the French or neutral version of Microsoft.ReportViewer.WinForms.resources.
Here is some more info on satellite assemblies:
http://stackoverflow.com/questions/1941700/what-is-a-satellite-assembly
http://msdn.microsoft.com/en-us/library/21a15yht%28v=vs.110%29.aspx
Hope this helps,
-Doug
10-09-2014 02:58 PM
The only thing that bugs me Doug is that when I first run the sequence, the report viewer show correctly but on a second turn it bugs and pops out that it can't find the assembly.
What is curious is that in the sequential process model, there is one .NET call (Proligent from Averna) that is called just after my first call to report viewer in the main sequence and when I skip this, the report viewer is always showing up without any errors.
It pops out searching for the assembly in the directory of that .NET assembly provided by Averna (Proligent).
This also happens with entity framework assemblies with this same .NET assembly from Averna.
How could that be behaving that way and not on the other tester?
Do you still think that this is a language-related issue?
I'm a bit confuse here!
I guess contacting Averna could be a possible option!!??
What do you think?
10-10-2014 10:56 AM - edited 10-10-2014 11:07 AM
It does sound like there might be an interaction with the AssemblyResolve handler that Proligent is registering. Their AssemblyResolve handler is on the stack when you get the exception for the error. It looks like they are calling LoadFrom on this assembly.
It might be worth asking Averna to look into this and see if limiting the actions of their AssemblyResolve handler to not try and resolve this assembly fixes the problem.
Changing the Culture to English might still workaround the problem either way, given that your machine set to English isn't showing this issue. Maybe for the English culture, the resource are directly built in to the main assembly so it's not having to load a satellite assembly in that case.
-Doug