Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Re the first point: have you tried the (free) <a href="http://www.microsoft.com/Express/" rel="nofollow noreferrer">VIsual Studio Express Edition</a>? For a lot of things, this is perfectly capable. You just don't get as many helpers / designers, and no plug-in support (for IDE extensions).</p> <p>Re the second: excluding some <a href="http://www.yoda.arachsys.com/csharp/faq/#framework.required" rel="nofollow noreferrer">nasty tricks</a>, you can't create a pure native executable from .NET; it relies <em>heavily</em> on the framework being available on the local machine. An assembly is just a package of IL, and can be contained (typically) in either a dll, or bootstrapped into an exe that loads the assemblies entry-point; but in this scenario the exe is just a simple loader plus a regular assembly.</p> <p>Actually, the CLR is more like the JVM; the "framework" is really just the equiavalent of a BCL. The main MS framework+CLR certainly has some Windows specific optimizations, but other runtimes/frameworks (<a href="http://msdn.microsoft.com/en-us/netframework/aa497273.aspx" rel="nofollow noreferrer">compact</a>, <a href="http://msdn.microsoft.com/en-us/embedded/bb278106.aspx" rel="nofollow noreferrer">micro</a>, <a href="http://silverlight.net/" rel="nofollow noreferrer">Silverlight</a>, <a href="http://www.mono-project.com/" rel="nofollow noreferrer">Mono</a>) will have different optimizations.</p> <p>Re multi-core - you have full threading support (for doing it yourself) - but the main <em>automated</em> multi-core support will (hopefully) be in .NET 4.0 with the "<a href="http://msdn.microsoft.com/en-us/concurrency/default.aspx" rel="nofollow noreferrer">parallel extensions</a>" work.</p> <p>Re the last point: should be very familiar indeed. Actually, if you want to do some comparisons, "<a href="http://www.red-gate.com/products/reflector/" rel="nofollow noreferrer">reflector</a>" (free) can take a compiled assembly and show you the code in either C# or delphi (or a few others).</p> <p>[update re questions]</p> <p>IL = Intermediate Language; .NET doesn't compile to native CPU instructions, but to something in-between that becomes CPU instruction at runtime (compiled "Just In Time" (JIT) on a method-by-method basis). This means that the JIT compiler can optimize the same IL for the local machine. You can do this in advance using <a href="http://msdn.microsoft.com/en-us/library/6t9t5wcf(VS.80).aspx" rel="nofollow noreferrer">NGen</a>.</p> <p>CLR = Common Language Runtime; essentially the VM</p> <p>BCL = Base Class Library; the set of classes shared my many apps</p> <p>Re deployment: first, install the .NET framework on the client ;-p</p> <p>After that - various options. At the simplest level, you can just copy the exe/etc onto the local machine and run. For example, I use "robocopy" to push code to web-servers.</p> <p>For full local installs of a complex client app, msi is an option (and the full VS IDE will help you with this).</p> <p>For simple clients, you can use <a href="http://msdn.microsoft.com/en-us/library/t71a733d(VS.80).aspx" rel="nofollow noreferrer">ClickOnce</a> - which packages the app into a signed bundle that provides self-updating etc capabilities and allows you to make statements about what security you need (full trust, etc). Express Edition allows you to author ClickOnce packages. ClickOnce can even be used on locked down clients where the user can't install apps, since the app is isolated and sand-boxed.</p> <p>Finally, you can run a .NET app off a network share, but there are some security implications: the "Code Access Security" layer won't give a network share "full trust" (although there were some recent changes to this so that mapped (F: etc) shares are trusted). So you'd need to use CASPOL at each client to trust the code. ClickOnce would be easier ;-p</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload