Florist

ответов0 / помог0

Ошибка 104 . является неоднозначной ссылкой

Обновлен 1680288495
Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка CS0104 "Document" является неоднозначной ссылкой между "Microsoft.CodeAnalysis.Document" и "System.Reflection.Metadata.Document". WorkedKursach E:\For De\Курсовая\Restaurant_Management\FormDiagramm.cs 87 Активные

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 System.Data.SqlClient;
using System.Xml.Linq;
using System.Drawing.Imaging;
using Microsoft.CodeAnalysis;
using System.Reflection.Metadata;
using System.Net.Mail;
using System.Net;
 
namespace Restaurant_Management
{
    public partial class FormDiagramm : Form
    {
        SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=E:\\For De\\Курсовая\\Restaurant_Management\\ElMag.mdf;Integrated Security=True");
        public FormDiagramm()
        {
            InitializeComponent();
        }
 
        private void FormDiagramm_Load(object sender, EventArgs e)
        {
            FillChart();
        }
 
        private void FillChart()
        {
            try
            {
                con.Open();
 
                DateTime now = DateTime.Now;
                DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1);
                DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);
 
                // изменяем запрос для выборки данных из базы
                string query = "SELECT Product.SupplierName, SUM(Product.Count) AS TotalQuantity FROM Product WHERE Product.TimeDilivery >= @startDate AND Product.TimeDilivery <= @endDate GROUP BY Product.SupplierName";
                SqlCommand cmd = new SqlCommand(query, con);
 
                // задаем параметры начальной и конечной даты
                cmd.Parameters.AddWithValue("@startDate", firstDayOfMonth);
                cmd.Parameters.AddWithValue("@endDate", lastDayOfMonth);
 
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                chart1.DataSource = dt;
                chart1.Series["Series1"].XValueMember = "SupplierName"; // название столбца с производителями
                chart1.Series["Series1"].YValueMembers = "TotalQuantity"; // название столбца с количеством товаров
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                con.Close();
            }
        }
 
        private void SendFormScreenshot(string recipient, string subject, string body)
        {
            try
            {
                // Создаем Bitmap объект, который будет содержать скриншот формы
                using (Bitmap bitmap = new Bitmap(this.Width, this.Height))
                {
                    // Создаем Graphics объект, который будет использоваться для отрисовки формы на Bitmap
                    using (Graphics graphics = Graphics.FromImage(bitmap))
                    {
                        // Отрисовываем форму на Bitmap
                        graphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
                    }
 
                    // Сохраняем Bitmap в файл формата PNG
                    string filename = "form-screenshot.png";
                    bitmap.Save(filename, ImageFormat.Png);
 
                    // Создаем новый документ Word
                    using (Document doc = new Document())
                    {
                        // Добавляем скриншот в документ Word
                        doc.AddImage(filename);
 
                        // Сохраняем документ Word в файл
                        string wordFilename = "form-screenshot.docx";
                        doc.Save(wordFilename);
 
                        // Отправляем документ Word на почту
                        SendEmail(recipient, subject, body, wordFilename);
                    }
                }
            }
            catch (Exception ex)
            {
                // Обработка возможных исключений
                Console.WriteLine("Произошла ошибка: " + ex.Message);
            }
        }
 
        private void SendEmail(string recipient, string subject, string body, string attachmentFilename)
        {
            MailMessage mail = new MailMessage();
            SmtpClient client = new SmtpClient();
 
            // Указываем отправителя и получателя
            mail.From = new MailAddress("easytocraft1@gmail.com");
            mail.To.Add(recipient);
 
            // Указываем тему и текст сообщения
            mail.Subject = subject;
            mail.Body = body;
 
            // Прикрепляем файл к сообщению
            Attachment attachment = new Attachment(attachmentFilename);
            mail.Attachments.Add(attachment);
 
            // Указываем параметры SMTP сервера Google
            client.Host = "smtp.gmail.com";
            client.Port = 587;
            client.EnableSsl = true;
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential("easyto", "x");
 
            // Отправляем сообщение
            client.Send(mail);
 
            // Освобождаем ресурсы
            mail.Dispose();
            client.Dispose();
        }
    }
}
как решить эту проблему?
Wizard41
ответов1 / помог0
1680288627
Florist, т.е. слово "неоднозначной" тебе вообще ни о чем не говорит?
влепить жирный лайк
colorotur
ответов2 / помог1
Обновлен 1680288861
Florist, «как решить эту проблему?» Ну вот у вас в коде есть строчка:

using (Document doc = new Document())
Компилятору нужно определить: что это за тип такой, Document? Компилятор начинает искать этот тип в пространствах имен, подключенных через using и обнаруживает, что тип с таким именем объявлен в подключенном пространстве Microsoft.CodeAnalysis (стр. 13) и в System.Reflection.Metadata (стр. 14). Какой из этих двух классов он должен выбрать? Он понятия не имеет, потому указывает вам на проблему. Решение, естественно, заключается в том, чтобы убрать неоднозначность. Варианты: 1. Удалить "ненужное" пространство из юзингов 2. Прописывать при использовании класса полный путь, напр. Microsoft.CodeAnalysis.Document вместо Document 3. Добавить нужному классу алиас и использовать его: using ProperDocument = Microsoft.CodeAnalysis.Document;, а потом using (ProperDocument document = new ProperDocument()) 4. Осознать, что раз вы работаете с Вордом, то наверное найденные компилятором типы не подходят вовсе и нужно искать в каком-то другом пространстве имен, которое у вас не прописано. После осознания и добавления нужного пространства убрать неоднозначность одним из вышеперечисленных способов.
влепить жирный лайк
Florist
ответов0 / помог0
1680289012
удаляя якобы ненужное из юзингов возникают большие проблемы
влепить жирный лайк
Andrey-MSK
ответов1 / помог0
1680289403
Florist, Дак откуда Document? Из какой области? Вам colorotur уже подробно объяснил, а вы так и молчите как партизан...
влепить жирный лайк
Florist
ответов0 / помог0
1680289473
Он используестся только в этой форме и то он именно создаётся.Точнее должен создаваться по моей изначальной задумке
влепить жирный лайк
Сначала вход
A B i U S JS PHP HTML CSS SQL C C++ C# PYTHON JAVA
Для входа только имэйл или имя и апроль
Можно сменить аватар
Имэйл Ваше имя
Пароль