Hey guys, 
I;m currently working on a project that requires me to read and write data 
from google sheets. Hence, I started with the **[Google Sheets Api (v4) 
Quick start Tutorial][1] for C#**. I'm using Visual Studio 2017 and have 
the latest versions of all nuget packages.

I have followed the tutorial step-by-step, but instead of creating a 
Console Application, I created a Windows Form Application. The code and 
other steps were followed exactly as written.

When run inside the IDE, the code runs as expected. However, when published 
and then run outside the IDE, the system cannot find System.Net.HTTP.
    An unhandled exception of type 'System.IO.FileNotFoundException' 
occurred in WindowsFormsApp1.exe
    Could not load file or assembly 'System.Net.Http, Version=4.1.1.2, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies
.The system cannot find the file specified.


After researching and trying the solutions posted in other similar 
questions (which did not work) I landed on a StackOverflow post suggest 
redirecting older version of System.Net.Http to the latest version. 
However, this did not work.

<https://i.stack.imgur.com/OhqMh.png>
App.config with redirection code (screenshot) 
<https://i.stack.imgur.com/OhqMh.png>

Here is my current code:


    using System;

    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;


    using Google.Apis.Auth.OAuth2;
    using Google.Apis.Sheets.v4;
    using Google.Apis.Sheets.v4.Data;
    using Google.Apis.Services;
    using Google.Apis.Util.Store;
    using System.IO;
    using System.Threading;




    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            // If modifying these scopes, delete your previously saved 
credentials
            // at 
~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
            static string[] Scopes = { SheetsService.Scope.
SpreadsheetsReadonly };
            static string ApplicationName = "Google Sheets API .NET 
Quickstart";
            public Form1()
            {
                InitializeComponent();
                UserCredential credential;


                using (var stream =
                    new FileStream("client_secret.json", FileMode.Open, 
FileAccess.Read))
                {
                    string credPath = System.Environment.GetFolderPath(
                        System.Environment.SpecialFolder.Personal);
                    credPath = Path.Combine(credPath, 
".credentials/sheets.googleapis.com-dotnet-quickstart.json");


                    credential = GoogleWebAuthorizationBroker.AuthorizeAsync
(
                        GoogleClientSecrets.Load(stream).Secrets,
                        Scopes,
                        "user",
                        CancellationToken.None,
                        new FileDataStore(credPath, true)).Result;
                    Console.WriteLine("Credential file saved to: " + 
credPath);
                }


                // Create Google Sheets API service.
                var service = new SheetsService(new BaseClientService.
Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = ApplicationName,
                });


                // Define request parameters.
                String spreadsheetId = 
"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";
                String range = "Class Data!A2:E";
                SpreadsheetsResource.ValuesResource.GetRequest request =
                        service.Spreadsheets.Values.Get(spreadsheetId, range
);


                // Prints the names and majors of students in a sample 
spreadsheet:
                // 
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
                ValueRange response = request.Execute();
                IList<IList<Object>> values = response.Values;
                if (values != null && values.Count > 0)
                {
                    Console.WriteLine("Name, Major");
                    foreach (var row in values)
                    {
                        // Print columns A and E, which correspond to 
indices 0 and 4.
                        Console.WriteLine("{0}, {1}", row[0], row[4]);
                    }
                }
                else
                {
                    Console.WriteLine("No data found.");
                }
                Console.Read();




            
        }


            private void Form1_Load(object sender, EventArgs e)
            {


            }
        }
    }



Any help to fix this problem would be much appreciated. Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Google Spreadsheets API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to