Упрощенный способ установки com dll, созданного в C # - Требуется экспертное предложение - PullRequest
0 голосов
/ 07 сентября 2011

Требование Вызов функции C # из классического ASP.

Решение

После нескольких часов исследований я смог вызвать функцию c # из классического asp. Я чувствую, что сделал так много шагов (ниже). Не уверен, что это правильный путь. Требуется экспертное предложение.

Машина для разработки: VS 2010 Рабочий сервер: Windows 2008 с установленной платформой 4

Шаги для создания библиотеки в C # (машина для разработки)

  1. Создать проект библиотеки классов
  2. Вставил следующий код

    с использованием системы; using System.Collections.Generic; использование System.Linq; используя System.Text; использование System.Runtime.InteropServices;

    cominter пространства имен { [Guid ( "EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")] открытый интерфейс ComClass1Interface { тест строки ();

    }
    
    
    
    [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
        ClassInterface(ClassInterfaceType.None)]
    [ComVisibleAttribute(true)]
    public class ComClass1 : ComClass1Interface
    {
        public string test()
        {
            return "vivek";
        }
    
    }
    

    }

  3. в свойствах-> build, проверьте Регистрация для COM Interop

  4. в свойствах-> Подпись, проверьте подпись сборки. создал файл ключа
  5. построил решение
  6. использовал regasm / regfile для создания regfile

Шаги, выполняемые в Server 2008 (производство) для установки DLL

  1. Скопировал gacutil.exe и gacutil.exe.config с компьютера разработчика C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ на сервер C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

  2. запустил файл реестра, созданный с компьютера разработчика

Есть ли лучший способ? Я также не уверен, что все вышеперечисленные шаги являются обязательными. Любое экспертное предложение было бы здорово.

Вопросы

  1. что такое GUID выше имени класса и имени интерфейса. это действительно требуется? Я просто скопировал это из MSDN. если это требуется, я должен создать свой собственный идентификатор или оставить его. есть ли инструмент для создания этого guid

  2. требуется интерфейс. это может работать без интерфейса?

  3. необходимо создать ключ. Когда я установил эту dll в производство, я не копировал файл ключа.

  4. какие файлы нужно скопировать. Я скопировал файл DLL и TLB и запустил gacutil

  5. есть ли лучший способ установки этого ком

  6. Я запустил скрипт реестра. это требуется?

1 Ответ

0 голосов
/ 07 сентября 2011

Я не эксперт по этой теме, но я делал что-то подобное несколько раз. В моих случаях это были сборки .Net, используемые приложениями VB6, а не веб-сайтами. Итак, вот мой опыт по вашим вопросам.

  1. Я никогда не использовал GUID в своих проектах, поэтому он не требуется. (В .NET SDK есть инструмент для создания идентификаторов GUID)
  2. Насколько я знаю, требуется интерфейс.
  3. Необходимо подписать вашу сборку, вы не можете установить / зарегистрировать вашу dll, если она не подписана. Вы не копируете ключевой файл, он используется только при компиляции вашего проекта.
  4. Вам нужны только ваши dll и tlb файлы. Если вы ссылаетесь на любые другие библиотеки, которые вы используете, они вам также нужны.
  5. В моих проектах я использовал проект установки из Visual Studio для регистрации моего приложения VB6 и моей библиотеки .Net, которые отлично работали для меня при распространении приложения.
  6. Насколько я знаю, это не обязательно.
...