How to increase load performance of referenced dll's on startup? - winforms

I have an windows forms application on .NET 4 framework and using Devexpress components. In first run of my application it wait 20 or 30 seconds for loading assemblies. After that it runs like a rocket :) How can I solve this? I googled some and found NGEN.exe. I don't have any idea NGEN is usable or not. Is there any another simple way for increase load assembly speed? What do you prefer?

You have a cold start problem. Cold start times are dominated by the disk drive, locating the assemblies on disk. A warm start is fast, the assemblies are present in the file system cache so don't have to be located on the slow disk.
Using ngen.exe makes cold starts worse, it requires another file to be found. The reason that Microsoft recommends that you only ever use ngen.exe on large assemblies. Jitting can actually be faster than finding the ngen image file.
There's not that much you can do about slow cold starts, it is a pure hardware problem and you need a faster disk to truly get ahead. Making sure it is defragged well certainly helps. An SSD is very nice. You could use ILMerge.exe to reduce the number of DLLs that need to be found. It is a problem that tends to solve itself over time if the user starts the program often enough after machine startup. Windows learns the usage pattern and prefetches executables so they'll be in the file system cache when needed. A feature called SuperFetch.
Fwiw, slow cold starts are not exclusive to .NET programs, unmanaged programs that use lots of DLLs have this problem too. Office and Adobe Reader are common examples. They cheat, they install an "optimizer" that runs at login. All it does is get those DLLs into the file system cache. Very annoying. You could do this too, of course I can't recommend that.

If you are running your WinForms project set to "Any CPU", try building it as x86 (or prefer 32-bit) instead and see if that makes a difference.
I specifically had an issue with the .NET 4.5.1 JIT compiler taking way too long to compile a couple of DevExpress WinForms dlls as 64-bit. Switching to 32-bit allowed our heaviest form to cold-start load in 3 seconds, whereas before it was taking 35 seconds.
Interestingly enough turning off the JIT optimization also helped, as apparently the 64-bit optimization was very slow. I noticed that our Release mode builds were running far slower than our Debug builds. As an easy test you can put a simple <App Executable Name>.ini in your application folder to turn off JIT optimization and see if makes a difference:
[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0
If any DevExpress support staff are reading this post and for posterity sake, here was my NGen output when pre-compiling with some DevExpress 14.1.3.0 dlls as 64-bit. I ended up not using NGen, but it threw some strange errors which you may find useful.
E:\Applications\Pryme>C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe install Pryme.exe
Microsoft (R) CLR Native Image Generator - Version 4.0.30319.18408
Copyright (c) Microsoft Corporation. All rights reserved.
Failed to load dependency DevExpress.XtraMap.v14.1 of assembly DevExpress.Dashboard.v14.1.Win, Version=14.1.3.0, Culture
=neutral, PublicKeyToken=b88d1754d700e49a because of the following error : The system cannot find the file specified. (E
xception from HRESULT: 0x80070002)
Failed to load dependency DevExpress.Map.v14.1.Core of assembly DevExpress.Dashboard.v14.1.Core, Version=14.1.3.0, Cultu
re=neutral, PublicKeyToken=b88d1754d700e49a because of the following error : The system cannot find the file specified.
(Exception from HRESULT: 0x80070002)
Failed to load dependency DevExpress.XtraMap.v14.1 of assembly DevExpress.Dashboard.v14.1.Core, Version=14.1.3.0, Cultur
e=neutral, PublicKeyToken=b88d1754d700e49a because of the following error : The system cannot find the file specified. (
Exception from HRESULT: 0x80070002)
Failed to load dependency DevExpress.XtraCharts.v14.1.Extensions of assembly DevExpress.XtraReports.v14.1.Extensions, Ve
rsion=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a because of the following error : The system cannot find
the file specified. (Exception from HRESULT: 0x80070002)
3> Compiling assembly DevExpress.SpellChecker.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d
700e49a (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.XtraSpellChecker.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d7
00e49a (CLR v4.0.30319) ...
4> Compiling assembly DevExpress.Data.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (CLR
v4.0.30319) ...
1> Compiling assembly E:\Applications\Pryme\Pryme.exe (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.Utils.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (CLR
v4.0.30319) ...
3> Compiling assembly DevExpress.Printing.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
2> Compiling assembly DevExpress.XtraEditors.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49
a (CLR v4.0.30319) ...
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
4>Cannot embed generic MethodDesc while compiling method PropVariant.GetVector
3> Compiling assembly DevExpress.Sparkline.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700
e49a (CLR v4.0.30319) ...
3> Compiling assembly Merydyan.Pryme.SI, Version=3.0.18.34925, Culture=neutral, PublicKeyToken=null (CLR v4.0.30319)
...
4> Compiling assembly Merydyan.Pryme.Core, Version=3.0.18.34915, Culture=neutral, PublicKeyToken=null (CLR v4.0.30319
) ...
3> Compiling assembly NodaTime, Version=1.2.0.0, Culture=neutral, PublicKeyToken=4226afe0d9b296d1 (CLR v4.0.30319) ..
.
4> Compiling assembly AutoMapper, Version=3.2.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005 (CLR v4.0.30319)
...
3> Compiling assembly Autofac, Version=3.5.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da (CLR v4.0.30319) ...
4> Compiling assembly EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 (CLR v4.0.30
319) ...
3> Compiling assembly Merydyan.Pryme.Data, Version=3.0.18.34919, Culture=neutral, PublicKeyToken=null (CLR v4.0.30319
) ...
2> Compiling assembly EntityFramework.Extended, Version=6.0.0.0, Culture=neutral, PublicKeyToken=05b7e29bdd433584 (CL
R v4.0.30319) ...
1> Compiling assembly Merydyan.Pryme.Services, Version=3.0.18.34923, Culture=neutral, PublicKeyToken=null (CLR v4.0.3
0319) ...
2> Compiling assembly Humanizer, Version=1.28.0.0, Culture=neutral, PublicKeyToken=979442b78dfc278e (CLR v4.0.30319)
...
3> Compiling assembly DevExpress.XtraReports.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49
a (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.Office.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49
a (CLR v4.0.30319) ...
1> Compiling assembly DevExpress.XtraCharts.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
(CLR v4.0.30319) ...
2> Compiling assembly DevExpress.Charts.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49
a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.PivotGrid.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700
e49a (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.RichEdit.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
1> Compiling assembly DevExpress.XtraGauges.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d70
0e49a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.XtraGrid.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (
CLR v4.0.30319) ...
1> Compiling assembly DevExpress.XtraLayout.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
(CLR v4.0.30319) ...
1> Compiling assembly DevExpress.XtraPrinting.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e4
9a (CLR v4.0.30319) ...
4> Compiling assembly DevExpress.XtraBars.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (
CLR v4.0.30319) ...
1> Compiling assembly DevExpress.XtraTreeList.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e4
9a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.XtraScheduler.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
4>Cannot embed generic MethodDesc while compiling method MouseEventSubscriber`1.PreFilterMessage
1> Compiling assembly DevExpress.XtraScheduler.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754
d700e49a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.XtraScheduler.v14.1.Extensions, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b8
8d1754d700e49a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.XtraWizard.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
(CLR v4.0.30319) ...
1> Compiling assembly DevExpress.Dashboard.v14.1.Win, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.Dashboard.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700
e49a (CLR v4.0.30319) ...
3>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraMap.v14.1, Version=14.1.3.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specified
.. If this assembly is found during runtime of an application, then the native image currently being generated will not
be used.
3>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.Map.v14.1.Core, Version=14.1.3.0
, Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specifie
d.. If this assembly is found during runtime of an application, then the native image currently being generated will not
be used.
1>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraMap.v14.1, Version=14.1.3.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specified
.. If this assembly is found during runtime of an application, then the native image currently being generated will not
be used.
1>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.Map.v14.1.Core, Version=14.1.3.0
, Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specifie
d.. If this assembly is found during runtime of an application, then the native image currently being generated will not
be used.
3>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraMap.v14.1, Version=14.1.3.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specified
. (Exception from HRESULT: 0x80070002). If this assembly is found during runtime of an application, then the native imag
e currently being generated will not be used.
3>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.Map.v14.1.Core, Version=14.1.3.0
, Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specifie
d. (Exception from HRESULT: 0x80070002). If this assembly is found during runtime of an application, then the native ima
ge currently being generated will not be used.
1>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraMap.v14.1, Version=14.1.3.0,
Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the file specified
. (Exception from HRESULT: 0x80070002). If this assembly is found during runtime of an application, then the native imag
e currently being generated will not be used.
4>Cannot embed generic MethodDesc while compiling method MouseEventSubscriber`1.PreFilterMessage
4> Compiling assembly DevExpress.DataAccess.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
(CLR v4.0.30319) ...
1> Compiling assembly DevExpress.Xpo.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (CLR v
4.0.30319) ...
3> Compiling assembly DevExpress.XtraGauges.v14.1.Win, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700
e49a (CLR v4.0.30319) ...
4> Compiling assembly DevExpress.XtraGauges.v14.1.Presets, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754
d700e49a (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.XtraCharts.v14.1.Wizard, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d
700e49a (CLR v4.0.30319) ...
3>Cannot embed generic MethodDesc while compiling method GaugeDataBindingPage`1.OnSelectedItemChanged
3>Cannot embed generic MethodDesc while compiling method GaugeDataBindingPage`1.OnSelectedItemChanged
3> Compiling assembly DevExpress.Utils.v14.1.UI, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (
CLR v4.0.30319) ...
4> Compiling assembly DevExpress.XtraRichEdit.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e4
9a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.XtraVerticalGrid.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d7
00e49a (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.XtraNavBar.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
(CLR v4.0.30319) ...
3> Compiling assembly DevExpress.XtraCharts.v14.1.UI, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
1> Compiling assembly DevExpress.DataAccess.v14.1.UI, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
3> Compiling assembly DevExpress.CodeParser.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
(CLR v4.0.30319) ...
2> Compiling assembly DevExpress.XtraPivotGrid.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
4> Compiling assembly DevExpress.XtraRichEdit.v14.1.Extensions, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88
d1754d700e49a (CLR v4.0.30319) ...
1> Compiling assembly DevExpress.XtraPdfViewer.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e
49a (CLR v4.0.30319) ...
1> Compiling assembly DevExpress.Pdf.v14.1.Core, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (
CLR v4.0.30319) ...
4> Compiling assembly DevExpress.Pdf.v14.1.Drawing, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49
a (CLR v4.0.30319) ...
2> Compiling assembly DevExpress.XtraReports.v14.1.Extensions, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d
1754d700e49a (CLR v4.0.30319) ...
4> Compiling assembly WebCam_Capture, Version=1.0.2395.24959, Culture=neutral, PublicKeyToken=null (CLR v4.0.30319) .
..
2>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraCharts.v14.1.Extensions, Ver
sion=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the
file specified.. If this assembly is found during runtime of an application, then the native image currently being gener
ated will not be used.
4> Compiling assembly DevExpress.XtraScheduler.v14.1.Reporting, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88
d1754d700e49a (CLR v4.0.30319) ...
4> Compiling assembly DevExpress.Xpf.Core.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (
CLR v4.0.30319) ...
2>Warning: System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraCharts.v14.1.Extensions, Ver
sion=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The system cannot find the
file specified. (Exception from HRESULT: 0x80070002). If this assembly is found during runtime of an application, then t
he native image currently being generated will not be used.
3> Compiling assembly DevExpress.Mvvm.v14.1, Version=14.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a (CLR
v4.0.30319) ...
1> Compiling assembly Merydyan.Pryme.UI.Windows, Version=3.0.18.34928, Culture=neutral, PublicKeyToken=null (CLR v4.0
.30319) ...
E:\Applications\Pryme>C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe install Pryme.exe

Maybe automatically run a stub of the program after install? That is, automatically load the program with a switch that exits silently as the last step in your install. Most people expect installs to take a few seconds/minutes so most people wont even notice.
UPDATE:
I checked the MSDN C# documentation and it says assemblies are loaded on demand (as needed) but you can force them to load explicitly using the Assembly.ReflectionOnlyLoadFrom method. If you preload your assemblies (and optionally the dependencies) while the user is entering login info then you'll effectively hide the loading delay.

Related

Cross Compiling for x64 on ARM (Apple Silicon)

It is definitely possible to target Intel when compiling on an Apple Silicon (ARM64) system, as Xcode does that all the time when building universal bundles of an app. However, I am unable to replicate this compiling a C program with make (specifically Stockfish).
What I've tried
I'm invoking make like so: make build ARCH=x86-64-modern COMP=clang (the same command works when I substitute x86-64-modern for apple-silicon). I've tried using the gcc compiler, which also worked when targeting the apple-silicon arch.
The problem
The make build command terminates with a bunch of errors, most importantly:
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Above the error is a bunch of lines complaining that a file was built for an "unknown bitcode architecture:
ld: warning: ignoring file <name>.o, lto file was built for unknown bitcode architecture which is not the architecture being linked (x86_64): <name>.o
So, it seems like the compilation phase succeeds, but the linking phase fails due to missing symbols. How would I acquire and provide the missing symbols to ld such that it can link successfully?

mono-complete source code embedded Linux ARM

I'm looking for the complete source code for mono (used for cross compilation on ARM platform).
I have been able to compile mono itself (https://download.mono-project.com/sources/mono/) and created a simple hello world application which works, however, when I want to use other functionallities, like 'system.io.serialports', the following error is displayed by the application:
$ mono hello_world.exe
Unhandled Exception: System.IO.FileNotFoundException: Could not load
file or assembly 'System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' or one of its dependencies. File
name: 'System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' [ERROR] FATAL UNHANDLED EXCEPTION:
System.IO.FileNotFoundException: Could not load file or assembly
'System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' or one of its dependencies. File
name: 'System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089'
This tells me that the System.IO assembly is not compiled with the mono package I've compiled (see the link up top).
Does anyone know where to find the complete source code that I can use for cross-compilation?
Regards,
Daan

LINK : error LNK2001: unresolved external symbol NtProcessStartup

I am new to Windows driver development and minifilters and I am trying to build the nullFilter sample using command line tools.
So I added #pragma comment(lib, "FltMgr.lib") to the .c file and issued the following commands successfully:
cl.exe /nologo /Fo../../bin\filter.obj /c filter.c /D _AMD64_
rc.exe /nologo /Fo../../bin\filter.res filter.rc
However, when I try to create the sys file:
link.exe /nologo /DRIVER:WDM /out:../../bin\filter.sys ../../bin\filter.obj ../../bin\filter.res
LINK : error LNK2001: unresolved external symbol NtProcessStartup
../../bin\filter.sys : fatal error LNK1120: 1 unresolved externals
I am using VS2012 Express and WDM8. My LIB environment variable is:
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\km\x64;
What am I doing wrong? Am I missing something?
NtProcessStartup function is to driver development what 'main' is for regular C programs. In other words, it is the program entry function that you need to provide yourself. See the article here for an introduction and explanation of this function. You can overrule the name of the startup function by using the -entry linker option. Setting '-entry:DriverEntry' is a common practice for driver development.

Ubuntu 12.04 + Mono: cannot find Windows forms

I am running Ubuntu 12.04 LTS. I need to run a Mono environment application (which needs Windows forms).
I have installed Mono runtime, from badgerports.org, version: mono-runtime 3.2.8+dfsg-4~dhx1+precise1.
When I go:
mono Application.exe
it bumps with:
Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
I have then installed:
libmono-winforms2.0-cil 3.2.8+dfsg-4~dhx1+precise1
But when running again:
mono Application.exe
I am getting the same error message as before:
Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
Help will be appreciated
Many thanks in advance
Helen
Edit: should I find where the library has been downloaded (how)? and then install it into Mono GAC using gacutil (How??)

.net 4.5 not working with VS2010, INotifyDataErrorInfo not found

I installed the .net 4.5 framework, but Visual Studio gives the following error
error CS0246: The type or namespace name 'INotifyDataErrorInfo' could not be found (are you missing a using directive or an assembly reference?)
I modified the project reference paths to the following
C:\Program Files\Reference Assemblies\Microsoft\Framework.NETCore\v4.5\
C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\
but then I get the error
error MC1000: Unknown build error, 'Could not load type 'System.ComponentModel.TypeConverter' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Has anyone encountered or resolved this issue before?
Since .NET 4.5 is still in beta, I think it's only officially supported in the VS11 Developer Preview, not in VS2010.

Resources