Showing posts with label Visual Studio. Show all posts
Showing posts with label Visual Studio. Show all posts

Saturday, 27 June 2015

When is a valid win32 application, not a valid win32 application

What happened

Recently I've needed to upgrade an application to use 4.0.3 of the .Net Framework. The upshot of this was that the application was no longer XP compatible.

Not a valid win32 application

This was un-expected, there isn't a compatibility issue with XP and this version of the framework. However, upon inspection, the compiler had marked the application as being for Vista OS onwards. Explicitly set this to XP and the application is once more a valid win32 application.

SUCCESS!!

This is how it was done.

  1. We inspected the application.exe header using dumpbin. This is a Visual Studio command line utility.
  2. Here we could see that it was targeting /subsystemversion 6.00 which is Vista, considering the change we made, this is neither desired or required. Ideally we would ask the compiler to mark this correctly for us, but msBuild doesn't expose this switch. So instead we would need to change this post compilation.
  3. So we added a build step to adjust this flag after compilation. For this we used editbin. Another Visual Studio command line utility. To set the

    editbin.exe "$(TargetPath)" /SUBSYSTEM:WINDOWS,5.01 /OSVERSION:5.1

DumpBin
You can use DUMPBIN to examine COFF object files, standard libraries of COFF objects, executable files, and dynamic-link libraries (DLLs). You can start this tool only from the Visual Studio command prompt. You cannot start it from a system command prompt or from File Explorer.
https://msdn.microsoft.com/en-us/library/c1h23y6c.aspx

EditBin
You can use EDITBIN to modify object files, executable files, and dynamic-link libraries (DLL). You can start this tool only from the Visual Studio command prompt. You cannot start it from a system command prompt or from File Explorer.
https://msdn.microsoft.com/en-us/library/xd3shwhf.aspx

/subsystemversion
Specifies the minimum version of the subsystem on which the generated executable file can run, thereby determining the versions of Windows on which the executable file can run.
Specifies the execution environment that's required by the executable image.

 

Monday, 23 February 2015

Managing Objectives

One of the things that I decided to improve this year is how I manage my personal development objectives. I outlined the following requirements.
  • I need to manage a backlog objectives.
  • I want these objectives to be broken down into tasks of a granularity that can be completed in my spare time.
  • I want a task board so that I can see the tasks remaining broken into monthly sprints.
  • I'll need to access to this data from any location.
  • I'll want to collaborate with zangl ltd for some gaming and mobile development tasks.
 
For me, the next step was straight forward. I logged on to Visual Studio Online and created a new Team Foundation Service Project called 'Development Objectives'.
 
The interface is intuitive, the task management is straightforward, the backlog can be easily groomed and it even has a burndown chart to keep me on track.
 
My Personal Task Board

 
So far it is proving the perfect solution, get started.

Monday, 2 February 2015

Make Tasks Visible

As discussed previously, we have used VisualWIP on projects to enable the whole team to see a task board showing the current state of our features for delivery. This application pulls from our data in TFS and the layout can be configured via an XML file (supported by a visual design mode within the application).

What if...

This application has worked well for us, but what if there is a reason that stakeholders can't run this 3rd Party Software. Perhaps it's against IT policy, maybe it feels too foreign for some of the team to comfortably use. Well, as long as we have a browser we can access this data without the need for Visual WIP or even Visual Studio.

By entering the TFS Url (inc. port) into our browser, we can run reports on the data as easily as if we were in the Visual Studio's Team Explorer. We can view and edit tasks (dependent on our TFS project permissions) and view any reports that we have created against the repository data.



Later versions of TFS enable you to access the contained data with relative ease via the web portal. Allowing an immediately accessible dashboard from which you can view the task summary, burn-down data and user defined queries. We also directly manage the backlog and sprint tickets thanks to the inclusion of an interactive task board.

I manage my own personal development tasks using the Team Foundation Services exposed through the visualstudio.com portal.


 

Keep it Visible

There should never be a reason for the teams tasks to be obscured. The whole team should know (and be able to see the context of) what they are doing. Maintaining the transparency of tasks that produce feature completion enables the team to work efficiently and allows the outstanding effort (scale of work involved) to be measured and managed effectively.

Wednesday, 14 January 2015

Find of the Day

The other day I found this ALM book underneath a colleagues monitor.

Whilst it's a great way to raise the height of a monitor screen, it makes for an even better read. If you are keen to find out more information on ALM for VS 2010 I would highly recommend this book.

Recently I attended one of Microsoft's one day ALM courses. It was encouraging to engage with other people at different stages of Maturity on the Continuous Delivery Matrix (more on this in a later post).

You can find these courses on the microsoft events site, book a day off work and attend one.

http://events.msdn.microsoft.com/

If you're quick then you might be able attend the event on the 28th January 2015 "ALM With Visual Studio & TFS 2013" at London Whitechapel.