title: Network file share access in .NetCore
body: <p>I am trying to access a network file share with .NET Core. I have seen this solution for Net Standard:</p>
  
  <p><a href="https://stackoverflow.com/questions/295538/how-to-provide-user-name-and-password-when-connecting-to-a-network-share/39540451#39540451">How to provide user name and password when connecting to a network share</a></p>
  
  <pre><code>public class NetworkConnection : IDisposable
      {
          string _networkName;
  
      public NetworkConnection(string networkName, 
          NetworkCredential credentials)
      {
          _networkName = networkName;
  
          var netResource = new NetResource()
          {
              Scope = ResourceScope.GlobalNetwork,
              ResourceType = ResourceType.Disk,
              DisplayType = ResourceDisplaytype.Share,
              RemoteName = networkName
          };
  
          var userName = string.IsNullOrEmpty(credentials.Domain)
              ? credentials.UserName
              : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName);
  
          var result = WNetAddConnection2(
              netResource, 
              credentials.Password,
              userName,
              0);
  
          if (result != 0)
          {
              throw new Win32Exception(result);
          }   
      }
  
      ~NetworkConnection()
      {
          Dispose(false);
      }
  
      public void Dispose()
      {
          Dispose(true);
          GC.SuppressFinalize(this);
      }
  
      protected virtual void Dispose(bool disposing)
      {
          WNetCancelConnection2(_networkName, 0, true);
      }
  
      [DllImport("mpr.dll")]
      private static extern int WNetAddConnection2(NetResource netResource, 
          string password, string username, int flags);
  
      [DllImport("mpr.dll")]
      private static extern int WNetCancelConnection2(string name, int flags,
          bool force);
      }
  
      [StructLayout(LayoutKind.Sequential)]
      public class NetResource
      {
          public ResourceScope Scope;
          public ResourceType ResourceType;
          public ResourceDisplaytype DisplayType;
          public int Usage;
          public string LocalName;
          public string RemoteName;
          public string Comment;
          public string Provider;
      }
  
      public enum ResourceScope : int
      {
          Connected = 1,
          GlobalNetwork,
          Remembered,
          Recent,
          Context
      };
  
      public enum ResourceType : int
      {
          Any = 0,
          Disk = 1,
          Print = 2,
          Reserved = 8,
      }
  
      public enum ResourceDisplaytype : int
      {
          Generic = 0x0,
          Domain = 0x01,
          Server = 0x02,
          Share = 0x03,
          File = 0x04,
          Group = 0x05,
          Network = 0x06,
          Root = 0x07,
          Shareadmin = 0x08,
          Directory = 0x09,
          Tree = 0x0a,
          Ndscontainer = 0x0b
      }
  </code></pre>
  
  <p>I have read that using [DllImport("mpr.dll")] in core is not advised. Is there a .net core way to do this.</p>