Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание COM+ объекта 
:(
    Опции темы
ziga
Дата 16.4.2010, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Нашёл интересную статью в инете тут
пытался по ней создать компанент COM+
делал так:

Создал консольный проект MyCaller
в него добавил класс MyComponent

вот код:
MyComponent:
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.EnterpriseServices;
using System.Reflection;

[assembly: ApplicationName("MyComponent")]
[assembly: AssemblyKeyFileAttribute("MyComponent.snk")]

[Transaction(TransactionOption.Required)]
public class MyComponent : ServicedComponent
{
    [AutoComplete]
    public void Call( string message )
    {
        Console.WriteLine("Callee called: " + message);
    }
}


MyCaller.cs:

Код

class MyCaller
{
    public static void Main()
    {
        MyComponent component = new MyComponent();

        for (int i = 1; i <= 10; i++)
            component.Call("Calling index: " + i);
    }
}


далее описано:
Компиляция производится следующим образом: сначала создается пара ключей для создания сильного имени сборки: 
sn -k MyComponent.snk (файл не создаётся пишет: Build Failed. For a list of build errors see the Error List. For detailed information about a build error select an item and press F1.)
далее по тексту:
То, что ключи находятся в файле MyComponent.snk, указывается с помощью атрибута сборки AssemblyKeyFileAttribute: 
Код

[assembly: AssemblyKeyFileAttribute("MyComponent.snk")]

Далее компилируется сборка COM+-компонента: 
Код

csc /target:library /r:System.EnterpriseServices.dll MyComponent.cs

и клиента: 
Код

csc /target:exe /r:MyComponent.dll MyCaller.cs


объясните по человечески что я делаю не так? где этот файл snk взять?
а ещё там описано что можно вместо этого ключа написать:

Код

[assembly: ApplicationID("B1E18470-3581-4fbe-92F6-984C0ACC285A")]


пробовал такой вариант тогда все команды выполняются но зайдя в службы компонентов (windows 7) не вижу там ничего похожего на MyComponent 

и самый главный вопрос как потом этот компонент использовать в других проектах?



Это сообщение отредактировал(а) ziga - 16.4.2010, 02:41
PM MAIL   Вверх
jonie
Дата 16.4.2010, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата

sn -k MyComponent.snk (файл не создаётся пишет: Build Failed. For a list of build errors see the Error List. For detailed information about a build error select an item and press F1.)
это надо в коммандной строке студии вводить (в пуске поищите нечто вроде Visual Studio 2008 Command Prompt)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ziga
Дата 16.4.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



Ключ получилось создать только теперь при компиляции пишет

Код

В сборке обнаружены недопустимые классы, производные от ServicedComponent.
(Классы должны быть общими, не абстрактными, иметь общий конструктор по умолчанию и соответствовать всем остальным требованиям ComVisibility)


а если использовать командные строки
Код

csc /target:library /r:System.EnterpriseServices.dll MyComponent.cs
csc /target:exe /r:MyComponent.dll MyCaller.cs


то создаётся DLL и EXE но когда запускаю вываливается ошибка.

кстати это нормально то что не используется namespace в обоих случаях ?
PM MAIL   Вверх
LRC
Дата 9.12.2010, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 21.9.2010

Репутация: нет
Всего: нет



Цитата

В сборке обнаружены недопустимые классы, производные от ServicedComponent.
(Классы должны быть общими, не абстрактными, иметь общий конструктор по умолчанию и соответствовать всем остальным требованиям ComVisibility)

как быть с этим?


вот собственно мой COM+
Цитата

[assembly: ApplicationID("4BFCD37A-168C-4ede-AB02-271448B00E8A")]
[assembly: AssemblyKeyFile("key.snk")]
[assembly: ApplicationActivation(ActivationOption.Server)]


namespace MyComObject
{
    [JustInTimeActivation]
    [ObjectPooling(Enabled = true, MinPoolSize = 2, MaxPoolSize = 5, CreationTimeout = 2000)]
    [Transaction(TransactionOption.Required)]

    public class dbOracle : ServicedComponent
    {
        public dbOracle()
        { 
        
        }

        protected override void Activate()
        {
        }

        protected override void Deactivate()
        {
        }

        protected override bool CanBePooled()
        {
            return true;
        }

        [AutoComplete]
        public float SomeMethod(float x, float y)
        {
            try { return x / y; }
            catch (Exception ex) { MessageBox.Show(ex.Message); return 0; }
        }
    }
}

PM MAIL ICQ   Вверх
LRC
Дата 9.12.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 21.9.2010

Репутация: нет
Всего: нет



проблему решилsmile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.