Why is this an issue?

When the syntax new Guid() (i.e. parameterless instantiation) is used, it must be that one of three things is wanted:

  1. An empty GUID, in which case Guid.Empty is clearer.
  2. A randomly-generated GUID, in which case Guid.NewGuid() should be used.
  3. A new GUID with a specific initialization, in which case the initialization parameter is missing.

This rule raises an issue when a parameterless instantiation of the Guid struct is found.

Noncompliant code example

Public Sub Foo()
    Dim G1 As New Guid        ' Noncompliant - what's the intent?
    Dim G2 As Guid = Nothing  ' Noncompliant
End Sub

Compliant solution

public void Foo(byte[] bytes)
Public Sub Foo(Bytes As Byte())
    Dim G1 As Guid = Guid.Empty
    Dim G2 As Guid = Guid.NewGuid()
    Dim G3 As Guid = New Guid(Bytes)
End Sub