Showing posts with label code. Show all posts
Showing posts with label code. Show all posts

Monday, November 7, 2011

Visual Studio 2010: Debug the .NET assemblies

The .NET framework is under heavy development and bugs are removed by Microsoft developers when found. However, you may still experience major bugs that might cause your application to crash. Sometimes it is even hard to determine whether it is a bug in your own code or in the framework. This issue has been taken to a new level in Visual Studio 2010. A feature, which by default is disabled in Visual Studio, enables you to debug the entire .NET source code directly within VS2010. Previously tools like .NET Reflector and ILSpy were required to identify any bugs in the .NET framework.


To enable .NET framework code debugging, please do the following:


Visual Studio 2019
To enable .NET framework code debugging in VS2019 please visit Debug the .net assemblies.



Visual Studio 2010

1) In Visual Studio 2010, select Debug -> Options and Settings...
The Options dialog is displayed.

2) Select Debugging in the left menu (se picture below) and check the option Enable .NET Framework source stepping.

















When running your application in debug mode, Visual Studio will download the .NET source code when needed. Please be aware that the source code might use a lot of free space on your hard drive depending on how many .NET assemblies that are in use.

Tuesday, November 1, 2011

Excel VBA: Download files from the Internet

There is no built-in function in Microsoft Excel which allows you to download contents from the Internet on the fly. To accomplish this task we need to use the API for WinInet. The use and explanation of API in VBA is for advanced users which have prior experience from either Visual Basic 6.0 or .NET.

Pitfalls
It is very important that all open Internet connections are closed as soon as the task is completed. WinInet only allows 2 concurrent connections to a given host. If you forget to shut down the connection after use, you will experience timeouts and misleading error messages. Please refer to the following website for more information related to the maximum allowed concurrent web connections:

Howto
The source code below should be pasted in a "Class Module" in Excel. If you are not sure how to open the VBA editor in Excel for your current Microsoft Office version, please refer to the following page:
  • Display the developer toolbar or ribbon in Excel

Create new class module:
  1. Open the Microsoft Visual Basic for Applications editor in Excel.
  2. Select Insert -> Class Module on the main menubar
  3. Rename the new class module to "WebClient"

Example
To use the code, you shold create a new instance of the class and any of the public methods:
  • DownloadFile - download a specific resource to a local file
  • UrlExists - check if a given URL exists

Dim objClient As New WebClient
Call objClient.DownloadFile("http://www.google.com", "c:\test.html")


Dependencies
The function "ReThrowError" is defined here:

Source Code
For the full source code, please visit

Saturday, October 8, 2011

.NET: SVG Support

After hours of searching for code for rendering SVG pictures I finally stumbled upon the SVG rendering engine at Codeplex.

The good thing about SVG is that it is supported in most modern browsers. However, SVG is not supported in .NET so you need to find an external library. It seems like Microsoft has focused all their energy on XAML, even though the two formats are very similar.

Fortunately for us the SVG Rendering Engine works more or less out of the box. I had to do some rewriting of the code to make it work with all SVG images. The library is still under development and needs a lot of new features to make it work 100% in accordance with the specifications.