DEV Community

Karen Payne
Karen Payne

Posted on

Visual Studio tip 3 secret code samples

Introduction

At any level of expertise with C# there is always something new to learn or relearn techniques not used often.

For this a developer should read the documentation if the class and/or method is known. If the documentation does not help let's look at a new feature in Microsoft Visual Studio 2022 (VS2022) known as GitHub Examples and Documentation which in many cases is in your face when hovering over many classes and methods.

GitHub Examples and Documentation

Example, a developer wants to use Enumerable.Range but perhaps the documentation and/or code sample is not enough. Hover over Enumerable.Range and the following is shown.

Tooltip hovering over Enumerable.Range

Single click on Range and press CTRL + ALT + ' which opens a code sample window as shown below.

Code samples window

  • Note at top of the window there is a link to Microsoft docs
  • In the top right hand corner of each sample is a button to copy code.
  • Bottom left corner of the window is a button to traverse to the GitHub repository.
  • Bottom right corner is a feedback button.

If a method has overloads e.g. SqlConnection there is a dropdown at the top of the code window to traverse to a specific overload.

Overload dropdown

Code sample overload dropdown

Important for code sample

Some code samples may have code that will not compile, as in the following example were EnsureEfTestUserExists(); will not exists in your code, in this case copy the code into Notepad, remove code like this than paste into Visual Studio.

[Fact]
public void Can_initialize_database_when_using_secure_connection_string_with_SqlCredential_and_eager_connection()
{
    EnsureEfTestUserExists();

    var connectionString = new SqlConnectionStringBuilder()
    {
        DataSource = @".\SQLEXPRESS",
        InitialCatalog = DefaultDbName<PersistSecurityInfoContext>()
    }.ConnectionString;

    var password = new SecureString();
    foreach (var c in "Password1".ToCharArray())
    {
        password.AppendChar(c);
    }
    password.MakeReadOnly();

    var credential = new SqlCredential("EFTestUser", password);
    var connection = new SqlConnection(connectionString, credential);

    var context = new PersistSecurityInfoContext(connection, true);
    try
    {
        context.Database.Delete();
        context.Database.Initialize(force: true);
        Assert.True(context.Database.CompatibleWithModel(true));
    }
    finally
    {
        Assert.True(connection.State == ConnectionState.Closed);
        context.Database.Delete();
        context.Dispose();
    }
}
Enter fullscreen mode Exit fullscreen mode

In the above code sample there is code for working with passwords, best practices are not to store passwords even with SecureString.

Even if code looks perfect, never simply copy and paste, make an effort to first understand the code.

How are these code samples done?

Microsoft scanned over 100,000 GitHub repositories and looked at popular repositories. With this known, there will be some methods that indicate they have code but will not so don't think there is something wrong.

Configure VS2022 for GitHub Examples and Documentation.

From Visual Studio menu

  1. Select Tools menu
  2. Options
  3. IntelliCode
  4. General tab
  5. Ensure Enable API Usage Examples is checked

VS2022 IntelliCode options dialog

Advance developers

For developers that need minimal docs, place the mouse cursor over a class e.g. SqlConnection and press F1 to open a browser window for, in this case SqlConnection.

Another example for a method, cursor to ExecuteReader and press F1 to open a browser window for help.

using var reader = cmd.ExecuteReader();
Enter fullscreen mode Exit fullscreen mode

The above is only for Microsoft classes and methods.

Summary

Knowing about GitHub Examples and Documentation provides an extra way to get assistance for how to work with many classes and methods if official docs are not sufficient and in many cases may save a developer from searching online blogs and developer forums for assistance.

Top comments (0)