Как использовать DLL, написанную на C #, в другом проекте asp.net? - PullRequest
1 голос
/ 01 февраля 2012

У меня есть файл с именем common.cs, который содержит часто используемые функции, такие как

    public int GetColumnIndexByNameTemplateField(GridViewRow row, string SearchColumnName)
{
    int columnIndex = 0;
    foreach (DataControlFieldCell cell in row.Cells)
    {
        if (cell.ContainingField is TemplateField)
        {
            if (((TemplateField)cell.ContainingField).HeaderText.Equals(SearchColumnName))
            {
                break;
            }
        }
        columnIndex++;
    }
    return columnIndex;
}

Теперь я хочу, чтобы этот файл common.cs изменился на common.dll, я создал другой проект библиотеки классов, в котором скопировал весь код из файла common.cs, добавил необходимые ссылки и создал его для создания файла dll. Я вставил этот файл dll из каталога отладки проекта в каталог bin моего проекта asp.net, который уже использует common.cs, но всякий раз, когда я пытаюсь импортировать эту dll, используя.

[DllImport("common.dll")]
public static extern String NewString(String x);

где NewString - другая функция, я получаю эту ошибку.

Невозможно найти точку входа с именем «NewString» в DLL «common.dll».

Я проверил уже опубликованные вопросы по stackoverflow, а также другим руководствам в Интернете, в которых рассказывается, как создавать и использовать dll, но я не знаю, почему я получаю эту ошибку, также в большинстве руководств показана dll, написанная на C ++, где поскольку моя dll написана на C #, они также говорят использовать __declspec (dllexport), который сообщает, что функция готова к экспорту или что-то в этом роде, но я не могу использовать это в C # dll, я полагаю.

Я думаю, это основной вопрос, но я впервые создаю dll в C #, поэтому, пожалуйста, помогите мне.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 01 февраля 2012

Ахмед, если вы хотите превратить любой проект в библиотеку (.dll), дважды щелкните папку «свойства» в обозревателе решений.Щелкните раскрывающийся список для типа проекта и выберите «Библиотека классов», затем нажмите «Построить, перестройте решение, чтобы перекомпилировать в .dll».

Обратите внимание, что вы можете создать новый проект ASP.NET в том же решении, щелкнув правой кнопкой мыши решение и выбрав «Добавить проект».Или вы можете открыть новый экземпляр Visual Studio.После того, как вы откроете проект ASP.NET, щелкните правой кнопкой мыши по ссылкам и выберите Добавить ссылку.Нажмите вкладку обзора, перейдите к папке, содержащей .dll, и добавьте ее.Не забывайте, что любые классы, определенные в .dll, должны быть помечены как общедоступные, иначе они не будут видны в других сборках.Также не забывайте операторы using для пространств имен, в которых определены ваши классы.

Когда вы нажимаете кнопку «Выполнить» (зеленая стрелка), он всегда запускает проект, выделенный жирным шрифтом в решенииисследователь.Если DLL-файл выделен жирным шрифтом, вы получите сообщение об ошибке, что вы не можете запустить библиотеку классов, но вместо этого вы должны изменить ее на консольное приложение.Если это консольное приложение, то для него должна быть определена статическая функция void Main (), чтобы он знал, с чего начать.Вы можете установить любой проект в качестве запускаемого проекта, щелкнув его правой кнопкой мыши в обозревателе решений и выбрав «Установить как запускаемый проект».

Если вы хотите запустить программу в своем решении, но не хотите устанавливать ее какзапустить программу, чем вы можете щелкнуть правой кнопкой мыши, перейти к отладке и запустить.Организация подобных проектов в одном решении может упростить их обслуживание.

Надеюсь, это поможет.

1 голос
/ 01 февраля 2012

если ваша сборка написана на c #, нет необходимости в dllimport. вместо этого перейдите для добавления ссылок, таких как , поэтому - msdn entry (перейдите для browse )

1 голос
/ 01 февраля 2012

Вставьте dll в папку Bin сайта, и вы можете использовать это, "используя" вверху класса файла, тогда вы получите все методы dll.

1 голос
/ 01 февраля 2012

Вам не нужно использовать DllImport.Поскольку common.dll - это управляемая сборка, вам просто нужно добавить ее в качестве ссылки в проекте ASP.NET, который пытается использовать NewString.

...