Тип взаимодействия не может быть встроен

 private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        int row = e.RowIndex;
        int col = e.ColumnIndex;
        if (row < 0 || col != 3)
            return;
        if (e.FormattedValue.ToString().Equals(String.Empty))
        {
        }

        else
        {
            double quantity = 0;
            try
            {
                quantity = Convert.ToDouble(e.FormattedValue.ToString());
                if (quantity == 0)
                {
                    MessageBox.Show("The quantity can not be Zero", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    e.Cancel = true;
                    return;
                }
            }
            catch
            {
                MessageBox.Show("The quantity should be decimal value.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Cancel = true;
                return;
            }
        }
    }
635
задан Peter Mortensen 3 June 2015 в 19:53
поделиться

3 ответа

.NET 4.0 позволяет встраивать в вашу сборку первичные сборки взаимодействия (или, скорее, те части, которые вам нужны), так что вам не нужно развертывать их вместе с вашим приложением.

По какой-то причине эта сборка не может быть встроена - но похоже, что это не проблема для вас. Просто откройте вкладку «Свойства» для сборки в Visual Studio 2010 и установите для параметра «Embed Interop Types» значение «False».

РЕДАКТИРОВАТЬ: См. Также ответ Майкла Густуса , удаляющий суффикс Class из используемых вами типов.

1040
ответ дан 22 November 2019 в 21:49
поделиться

Развертывание правильного ответа Джона.

Проблема здесь в том, что вы комбинируете новую функцию «Встраивать типы взаимодействия» (или NoPIA) с использованием типа класса. Функция «Embed Interop Types» работает, по существу, статически связывая все типы из PIA (Primary Interop Assembly) со ссылочной сборкой, устраняя накладные расходы на ее развертывание.

Эта функция отлично работает для большинства типов в PIA, но имеет ограничения. Одна из них заключается в том, что вы не можете встраивать классы (это проблема обслуживания). У Миши есть подробная статья в блоге о том, почему это запрещено

32
ответ дан 22 November 2019 в 21:49
поделиться

Как Ян Мне понадобилось некоторое время, чтобы понять это... =S Итак, для всех, кто ослеплен разочарованием.

  • Щелкните правой кнопкой мыши на нарушающей сборке, которую вы добавили в проводнике решений под вашим проектом References. (В моем случае WIA)
  • Нажмите свойства.
  • И там должна быть опция Embed Interop Assembly.
  • Установите его в False
120
ответ дан 22 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: