Система Linux выдает ошибку в приложении .NET Core - PullRequest
0 голосов
/ 15 октября 2019

Я написал консольное приложение в .NET Core для Linux. Когда я пытаюсь запустить его на моем Linux-VPS, он выдает эту ошибку:

Could not resolve type with token 01000010
  at Lumo.Program.Main (System.String[] args) [0x00039] in <dff92c70c42444648f6bf1be28aa709c>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not resolve type with token 01000010
  at Lumo.Program.Main (System.String[] args) [0x00039] in <dff92c70c42444648f6bf1be28aa709c>:0

вот мой основной код C #:

string city;
 Console.WriteLine("lolyweather");
  Thread.Sleep(1000);
   Console.Write("Enter your city: ");
   city = Console.ReadLine();
   string link = "https://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=" + API_KEY + "&units=metric&cnt=6";
 GetWeather(link, city);

и вот функция GetWeather:

 public static void GetWeather(string url, string city)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            httpWebRequest.Method = "GET";
            try
            {
                using (WebResponse response = httpWebRequest.GetResponse())
                {
                    HttpWebResponse httpResponse = response as HttpWebResponse;
                    using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        var json = reader.ReadToEnd();
                        var obj = JsonConvert.DeserializeObject<WD.RootObject>(json);
                        WD.RootObject weather = obj;


                        Console.WriteLine("There are " + weather.weather[0].main.ToString() + " in {0}", city);
                        Console.WriteLine("There are {0} \u00B0C.", Math.Round(weather.main.temp));
                        Console.WriteLine("Max temperature: {0}, Minimum temperature: {1}", Math.Round(weather.main.temp_max), Math.Round(weather.main.temp_min));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Program crashed: {ex.Message} (Check if you wrote your city's name correctly!)");
                Thread.Sleep(1_000);
            }
        }

Кто-нибудь знает, что случилось?

1 Ответ

0 голосов
/ 22 октября 2019

Из вашего последнего комментария кажется, что вы создали зависимую от фреймворка версию вашего основного приложения .NET. Вы не можете просто загрузить dll и запустить его без установки .NET Runtime или создания автономного развертывания. Я бы порекомендовал вам либо установить .NET Runtime на свой VPS, который включает в себя копирование всех выходных данных из команды публикации dotnet или создание автономного развертывания как часть шага публикации, чтобы загрузить его.

Попробуйте эту команду и скопируйте вывод в папку публикации и дайте нам знать, если она работает.

dotnet publish -c Release -r linux-x64 --self-contained true

Различия между структурно-зависимым и автономным можно найти здесь: https://docs.microsoft.com/en-us/dotnet/core/deploying

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...