Click here to Skip to main content
6,595,444 members and growing! (14,852 online)
Email Password   helpLost your password?
General Programming » Macros and Add-ins » VS.NET Macros     Intermediate

Refreshing project references with a Macro

By Gustavo Bonansea

How to write a macro in order to refresh all the references of all the project of the solution
Windows, .NET, Dev
Posted:24 Feb 2004
Views:59,064
Bookmarked:10 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
12 votes for this article.
Popularity: 3.83 Rating: 3.55 out of 5
2 votes, 16.7%
1

2
2 votes, 16.7%
3
2 votes, 16.7%
4
6 votes, 50.0%
5

Introduction

This article show you how to write a macro that refreshes all the references of a solution. This is useful when you have a lot of projects with interrelated DLL references between them. So when you have DLL versions problems, you refresh all the references of the solution an solve it.

Using the code

Take the code showed below and paste it in the Macro IDE (Alt + F11) to create a macro.

RefreshProjectReferences Sub

This function runs the macro code. Obtains the solution projects, display a processing message and iterates between projects refreshing the references. Uses the DTE Status Bar to show a progress bar and a progress message.

    'Refresh the references of all projects in the solution

    Sub RefreshProjectReferences()
        ' Retrieve the VSProject object.

        Dim oVSProject As VSProject

        'Create an popup message window

        Dim frmMessage As PopupMessage
        Try
            frmMessage = New PopupMessage("Refreshing references")
            frmMessage.Show()

        Catch ex As Exception
            'Handle exceptions here

        End Try

        'Iterate solution's projects

        For i = 1 To DTE.Solution.Projects.Count
            'Update progress bar

            DTE.StatusBar.Progress(True, "Refreshing projects references", _
              i, DTE.Solution.Projects.Count)
            'Obtain the project object

            oVSProject = CType(DTE.Solution.Projects.Item(i).Object, VSProject)
            If Not oVSProject Is Nothing Then
                'Refresh references

                oVSProject.Refresh()
            End If
        Next
        'Refreshing finished

        DTE.StatusBar.Progress(False)
        DTE.StatusBar.Text = "Refreshing succeed"
        DTE.StatusBar.Highlight(True)

        Try
            'Destroy objects

            frmMessage.Close()
            frmMessage.Dispose()
            frmMessage = Nothing
        Catch ex As Exception
            'Handle exceptions here

        End Try
    End Sub

PopupMessage Class

This class defines a Popup Window that show a message during refresh execution.

Note: The look & feel of this window is very simple, you can work on it for a best view.

    'Popup Window with a Waiting Message

    Public Class PopupMessage
        Inherits System.Windows.Forms.Form

        Private txtMessage As New System.Windows.Forms.TextBox

        Public Sub New(ByVal pMessage As String)
            Try
                'Form format

                Me.TopMost = True
                Me.ControlBox = False
                Me.FormBorderStyle = _
                       System.Windows.Forms.FormBorderStyle.Fixed3D
                Me.Text = ""
                Me.ShowInTaskbar = False

                'Textbox format

                txtMessage.Top = 20
                txtMessage.Left = 40
                txtMessage.Width = 160
                txtMessage.Font = New System.Drawing.Font("Arial", 10, _
                   System.Drawing.FontStyle.Bold)
                txtMessage.BackColor = System.Drawing.SystemColors.Control
                txtMessage.ForeColor = System.Drawing.Color.Black
                txtMessage.BorderStyle = _
                    System.Windows.Forms.BorderStyle.None
                txtMessage.Text = pMessage
                txtMessage.AutoSize = True
                txtMessage.SelectionLength = 0
                Me.Controls.Add(txtMessage)

                Me.Height = txtMessage.Height + 40
                Me.Width = txtMessage.Width + 80
                Me.StartPosition = _
                   System.Windows.Forms.FormStartPosition.CenterScreen
                txtMessage.Refresh()
                Me.Refresh()

            Catch ex As System.Exception
                'Handle exceptions here

            End Try

        End Sub

    End Class

Tip

After you paste the code in the Macro Editor is useful assign a key combination to the macro (if you plan to use very much times the macro).

To do this:

  1. Open the menu Tools/Options
  2. Go to the folder Enviroment and select the Keyboard item
  3. Then select the macro name (e.g. Macros.Samples.VSEditor.RefreshProjectReferences)
  4. Select the shortcut key combination and assign it

When you select the shortcut key combination, VS will show you if it's already used and in the "Use new shortcut in" you can select the valid shortcut context.

Points of Interest

The only thing I want to remark is that macros makes extensible the Visual Studio environment and if you take a minutes to write a little code you can automate several repetitive actions.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Gustavo Bonansea


Member
Gustavo is Information Systems Enginner and
Information Systems Analyst. He born in Colonia Caroya, Cordoba, Argentine.
He worked in the Universidad Tecnologica Nacional in Cordoba, Argentine like Research Group Coordinator in the Business Intelligence area.

After that worked like a professor of Visual Basic, SQL Server 2000, .NET Plataform, Visual Basic.NET and C#

His experience in programming includes: QuickBasic, C, C++, FoxPro, Visual Basic, VB.NET, C# and ASP.NET. He has working with XML, XSD, XSLT and other related technologies.

He is now working in Pectra Technology, in the development and the software engineering area in a product named Pectra BPM Studio Framework (Business Process Management Solution) using Microsoft.NET and XML technologies.

His hobbies are play the piano and reading. He is a science lover
Occupation: Web Developer
Location: Argentina Argentina

Other popular Macros and Add-ins articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 20 of 20 (Total in Forum: 20) (Refresh)FirstPrevNext
QuestionError when running in VS 2008 PinmemberD P Pham14:29 6 Jul '09  
GeneralSmall Glitch PinmemberMichael Lang22:35 26 Apr '04  
GeneralRe: Small Glitch PinmemberGustavo Bonansea12:05 27 Apr '04  
GeneralRe: Small Glitch PinmemberMichael Lang17:22 28 Apr '04  
Generalslight compiling problem Pinmembereltwo3:00 19 Mar '04  
GeneralRe: slight compiling problem PinmemberGustavo Bonansea2:19 22 Mar '04  
GeneralRe: slight compiling problem Pinmembereltwo3:42 22 Mar '04  
GeneralRe: slight compiling problem PinmemberGustavo Bonansea4:59 22 Mar '04  
GeneralNewbie: how to use ?? PinmemberD.T17:41 3 Mar '04  
GeneralRe: Newbie: how to use ?? PinmemberGustavo Bonansea6:15 4 Mar '04  
GeneralRe: Newbie: how to use ?? PinmemberD.T17:02 10 Mar '04  
GeneralRe: Newbie: how to use ?? PinmemberGustavo Bonansea2:36 11 Mar '04  
GeneralRe: Newbie: how to use ?? PinmemberD.T22:21 22 Mar '04  
GeneralRe: Newbie: how to use ?? PinmemberGustavo Bonansea0:52 23 Mar '04  
Generalphoto Pinmemberna_isabel1:59 26 Feb '04  
GeneralRe: photo PinmemberGustavo Bonansea2:26 26 Feb '04  
GeneralRe: photo Pinmemberna_isabel8:29 26 Feb '04  
GeneralRe: photo PinmemberGustavo Bonansea9:25 26 Feb '04  
Generalquestion PinmemberBruno Capuano4:04 25 Feb '04  
GeneralRe: question PinmemberGustavo Bonansea4:24 25 Feb '04  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 24 Feb 2004
Editor: Nishant Sivakumar
Copyright 2004 by Gustavo Bonansea
Everything else Copyright © CodeProject, 1999-2009
Web21 | Advertise on the Code Project