SCC Removal Tool for TFS / Visual Studio

Preface

Publishing sample code to the blog requires some manual tasks to remove all the source control configurations and files as well as the user specific files of Visual Studio.

After publishing a few code samples, having to do the same changes manually again and again, I thought it was time to create a tool doing this for me. Of course, taking the time I needed to build that tool, I could have published a few more code samples. But it is much more fun to write a tool than to do the same thing again and again 😉 And of course, having a tool makes sure I will not forget a step.

The primary intention is to disconnect the solution from source control. I don’t like samples downloaded from the internet where the first thing that happens is, that VS complains it cannot connect to the source control. Beside removing the SCC footprint, the tool also deletes all the output. I think the output is not needed when the source code is delivered.

This tool is created based on the usage of TFS 2012 und Visual Studio 2012. So maybe, when using older versions of VS or other version control systems, this tool might not remove all the SCC footprint.

SCC Files To Delete

TFS creates a .vssscc for each solution and a .vspscc file per project. The tool searches for these files in the working directory and its subdirectories and deletes them.

Disconnect From Source Control

The solution file .sln file contains some information about the source control system where the code is stored. All this is configured inside GlobalSection(TeamFoundationVersionControl). The whole section needs to be removed to disconnect the solution from source control.

The project file .csproj (suffix of C# projects) also contains some SCC footprint. Every line starting with >Scc needs to be removed too.

User Files To Delete

Visual Studio stores user-specific information related to the solution in .sou files. User-specific information related to the project are stored in .user files. The tool deletes all of these file types in the working directory and below.

Directories To Delete

By default, the output of a project is written to bin and obj directories, which are located below the project directory. All directories with these names are deleted. You can enter additional directory names in the “Remove Directories” field. I use this because I change the output for all configurations to “.\Output” by default.

And for those of you who create unit tests: the TestResults directories are included in the list of default directories too.

Configuration Abilities

The tool reads the default file types and directories to be deleted from the app.config. So in case you like to change these values, just edit the file. The tool also stores the values entered (working directory and additional directories to be removed) into the app.config.

The SCC footprint detection of the solution and project files is hard-coded. So in case you need some changes here, you have to change the code.

Maybe Incomplete

Yes, the tool might be not be complete. There are several reasons for this: C# is the preferred programming language in my company. So maybe some language-specific files or settings are not covered by the tool.

Also, we do create only a small subset of applications types, like WPF, Windows services, … So maybe SharePoint or Office projects look different. Again, if you need to cover these project types and the tool does not: you have the code, so change it.

Not To Be Forgotten

The software is provided “as is”, without warranty of any kind, expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

Be careful!

The source code can be found here.

SCC Remover Screenshot

Make Custom Class Item Templates for Windows Store Apps Visible in VS 2012

Make the Item Visible

One very helpful feature of Visual Studio is the ability to create custom item or project templates. I’m using this feature for years to get a pre-formatted C# class, containing several regions.

In VS 2012, one can set the directory where these custom item templates are located via “Tools / Options / Projects and Solutions” dialog. This folder contains several subfolders for some categories, i.e. JavaScript, Visual Basic, or Visual C#. These were the places where to put the appropriate custom item templates.

The first thing that has changed in VS 2012 (at least Update 3, can’t recall if this has changed before) compared to VS 2010 is that you have to create a “My Templates” folder below the corresponding one. Means, if I have a custom C# class item template, it has to be put into “C:\Users\nnn\Documents\Visual Studio 2012\Templates\ItemTemplates\Visual C#\My Templates” to be shown in the “My Templates” section of the “Add New Item” dialog.

But this did not work for all kinds of project types. At least, it does not work for Windows Store app projects. Even though the item template is located at the right place, it is not listed by the “Add New Item” dialog. Of course it is listed in a Windows console app project.

For whatever reason, the Windows Store app project requires an additional setting in the vstemplate file, which is part of the item template zip file. This setting is the element <TemplateID>Microsoft.CSharp.Class</TemplateID> inside the <TemplateData> section. Putting the updated vstemplate into the class item zip, the template is also listed in the “My Templates” section of the “Add New Item” dialog in Windows Store app projects. The TemplateID is not generated when exporting the template by VS.

You might notice too, that from the moment on when the TemplateID is added, the item template will be listed twice for other project types, i.e. Windows console application.

After making these changes, I had some issues with the item template cache (retrieving an error when selection one of the duplicates in the list). I just deleted the directory ItemTemplatesCache in “C:\Users\nnn\AppData\Roaming\Microsoft\VisualStudio\11.0”.

How to Create a Custom Item Template

In case you hadn’t created a custom item template yet, have a look at How to: Create Item Templates.

On my VS 2012 installation, the “Export Template…” menu item was not part of the File menu. So I had to add it using the “Tools / Customize” dialog. Switched to the “Commands” tab, selected “Menu bar”, “Add Command”, selected “File” from the categories, and already found the missing item.

Exporting the template, it will written to “C:\Users\nnn\Documents\Visual Studio 2012\My Exported Templates” by default. Selecting the “Automatically import the template into Visual Studio” option copies the file to the directory configured in the VS 2012 settings (see above). The default is “C:\Users\nnn\Documents\Visual Studio 2012\Templates\ItemTemplates”. You have to move it into the appropriate subdirectory yourself!

Links

I have to confess that I did not found out all of it by myself. Here are the links to the postings in MS forums where I found most of the informations:

  • Can’t see My Templates (VS 2012 Update 3)
  • Where to put Custom Item Templates for Windows Store Apps (XAML/C#) in VS2012 Update 3?
  • Visual Studio UI Toolbox disappeared

    I can’t recall if it was right after the initial installation, or if I hit any whatever key-combination to hide it, or closed it by mistake: The UI toolbox in my Visual Studio 2012 was not visible. First, I did not care because I didn’t needed it. But the point in time came when I needed it – and still it was not there. Neither a ‘Toolbox’ item in the View menu.

    I searched the internet, did a repair, did a toolbox rebuild, reset the window layout, and was close to un- and reinstall it. Then, after searching again, I found a posting for VS 2008 SP1. It says one can use the CTRL+ALT+X key to show the toolbox window. Fortunately, the key combination worked for VS 2012 too! The toolbox window was back again 🙂 This saved me several hours of non-productive installation time.

    Soon, I added the Toobox command to the ‘View / Other Windows’ menu to make sure I will not lose it again.

    And in case you need to rebuild the toolbox content, you can do this:

    1. Close Visual Studio;

    2. Open the “c:\Users\\AppData\Local\Microsoft\VisualStudio\11.0″ folder and remove all the .TBD files;

    3. Start regedit;

    4. Find the “HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\ToolboxControlsInstaller_AssemblyFoldersExCache” and “HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\ToolboxControlsInstallerCache” keys;

    5. Remove everything from these keys leaving them empty;

    6. Run Visual Studio again and wait until it recreates all items in the toolbox. This might be a lazy rebuild, started when you open a UI control in the editor.

    (found this list here: www.devexpress.com/Support/Center/Question/Details/K18560)

    Where Do SSDT SQL Scripts Connect To?

    In some software projects I used empty Visual Studio solutions to create some kind of database projects. I added SQL script files to the solutions to create all database objects, like tables, functions, stored procedures, views, constraints, and so forth. A batch file was used to run all these scripts against the database.

    One common part of these script files was a snippet of sample code to test the database object, e.g. a stored procedure or function, directly from inside Visual Studio. This snippet both documented the use and gave a quick way to test changes. Of course, this snippet was intended to be used only when connected to a local SQL instance to avoid damage in any other environment!

    Playing around with SQL Server Data Tools (SSDT) in VS 2012, I was looking for the ability to connect a function script to my existing local database. Under the menu item SQL / Transact SQL Edit / Connection there is the ability to connect to a database. To my surprise, I was not asked to which SQL instance or database I would like to connect to. At least, clicking the connect menu item seemed to do nothing at all.

    But running the script worked, and the result window told me that the function was created successfully. I was wondering where. Searching for a database selection option in the toolbars, as I know it from the SQL script files in VS 2010, failed. There is no such possibility. Was the function created in the master database? But which SQL Server instance was used?

    Well, Visual Studio showed me the answer to these questions all the time, but I did not noticed it.

    When you edit a function or a stored procedure script file of a SQL Server Database project – not a simple SQL Query file! – you will find these information in the properties window on the right (or wherever you have placed it). The properties window shows the connection name, logon name and so forth, and whether the connection is open or closed. You cannot change any entry. These properties are not available for table script files of the project, which can’t be connected to any database at all from within Visual Studio.

    But the properties window does not tell you the name of the database. Almost, it is the project’s name. But it doesn’t have to. The name can be found in the .sqlproj.user file, located in the project directory. Of course, you can edit this file to change the name.

    VS 2012 Recent Project List

    For whatever reason, the VS dev team decided to remove the Recent Projects from the File menu. Thankfully, they did not removed the command itself.

    The only thing one has to do is right-click the menu bar (or go to Tools / Customize), switch to the Commands tab page, select the File menu bar entry in the combo box, add a new menu named Recent &Projects, and move it wherever you like. Then select the newly created menu bar in the “Menu bar” combo box and add the command Recent Project List.

    Tired Of Office / Visual Studio Yelling!

    Have you already installed Office 2013 and / or Visual Studio 2012? And are you one of the “old-fashioned” internet guys who understand UPPERCASE as yelling? Then you might feel uncomfortable when you are looking at the headings of Office’s and Visual Studio’s ribbon bar.

    Thankfully, others were already tired of too, so there is an almost simple solution.

    For Office, go to www.dreamwalkerblog.com/blog/2012/12/fix-the-casing-on-new-microsoft-applications/, download the zip file, and run it. Maybe have a look at it prior to execution, it might contain a virus 😉 At the time of writing it didn’t. It was just copying a few files. This saves you from manually editing the ribbon bar, as described in www.askvg.com/how-to-get-rid-of-all-caps-tab-titles-in-microsoft-office-2013-ribbon/.

    To change Visual Studio, one has to set a registry key, as described in blogs.msdn.com/b/zainnab/archive/2012/06/14/turn-off-the-uppercase-menu-in-visual-studio-2012.aspx. The zip file mentioned above includes this too. But you should remove the registry settings you do not need. Maybe you have to open the command line as an administrator. On my machine, that part did not work, but it’s really easy to use regedit.

    And to see what the community thinks about this “feature”, see social.msdn.microsoft.com/Forums/eu/officedevpreview/thread/39b4b762-5ffa-4306-8c6a-7811d022334a.

    Update 2013-07-31: Configure VS 2013 (Preview)
    Found a good description at Stack Overflow. Just setting the registry key like done for VS2012 did not work on my machine. I installed the VSCommands.

    Limit Code Analysis Warnings

    Visual Studio Code Analysis hat ein Limit von 200 für die Anzahl der Code-Analysis-Warnungen. Dies ist gut, um trotz der vielen Warnungen ein Projekt kompilieren zu können, kann aber auch ein Problem verursachen, wenn Tools eingebunden werden, welche selbst massive Anzahlen von Warnungen generieren und auf die Warnung von VS, dass dieses Limit überschritten sein, mit einem Abbruch reagieren. In meinem konkreten Fall ging es um DocProject, welches sinniger Weise mit einer “OutOfMemoryException” abbricht, wenn die Anzahl der undokumentierten Funktionen 200 übersteigt (sollte ja nicht vorkommen aber…). Wer also wissen möchte, wie viele CA-Warnungen er wirklich hat, sollte den Wert in der Registry erhöhen (die Änderung ist sofort wirksam).

    Beschreibung von Microsoft: When first running Visual Studio Code Analysis over a large project, you may encounter the following error: CA0503: Additional warnings cannot be displayed. By default, a maximum of 200 warnings are displayed in the Error List. You can increase this amount by modifying the following registry value: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Setup\EDev\CodeAnalysisErrorListViolationLimit Simply set this to a value that suits your needs.