2013-08-21 3 views
1

У меня есть некоторые .Net-функции, которые я пытаюсь использовать в VB6. Я следил за несколькими учебниками. Я с успехом написал тестовую программу, используя формулу: http://www.codeproject.com/Articles/3511/Exposing-NET-Components-to-COMвыставляя .Net для COM

Однако, когда я пытаюсь сделать это с помощью моего фактического проекта, мой ProgId не отображается в реестре, как мой тестовый файл. Я убедился ComVisible свойство == верно

using System.Runtime.InteropServices; 

namespace Controls.Graph.Web 
{ 
    [Guid("5F9F6C6F-016A-4CFF-BD7A-3463761807E1")] 
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
    public interface _GraphScript 
    { 
     [DispId(1)] 
     string getGraphXml(); 
    } 

[Guid("35901BC6-EFF1-490C-84FA-786E8462C553")] 
[ClassInterface(ClassInterfaceType.None)] 
[ProgId(ProgIds.GraphScript)] 
public class GraphScript : _GraphScript 
{ 
    protected GraphScript()  
    { 
    } 

    /// <summary> 
    /// 
    /// </summary> 
    /// <returns>The graphs xml and javascript</returns> 
    public string getGraphXml() 
    { 
     DisplayDefaults tempDefaults; 
     tempDefaults = new DisplayDefaults(); 

     GraphConstructor graph = new GraphConstructor(); 
     graph.constructGraph(); 
     GraphModel completedGraph = graph.Graph; 

     return GraphControl.RenderGraph(completedGraph, tempDefaults, 1) + GraphControl.RenderGraphScript(); 
    } 
} 
} 

и мой ProgID ...

using System; 

namespace Controls.Graph.Web 
{ 
    /// <summary> 
    /// ProgID Constant 
    /// </summary> 
    public static class ProgIds 
    { 
     public const string GraphScript = "GraphData"; 
    } 
} 

Я не уверен, какой кусок головоломки я здесь отсутствует

EDIT: на самом деле Руководство отображается в реестре, однако Progid все еще нет. Любые идеи/предложения?

также уверен, чтобы сделать это: registered for com interop

+0

Как вы регистрируете свою сборку? Вы регистрируете его как 32-битную или 64-битную? Если вы регистрируетесь под 32-битным, вам нужно посмотреть в разделе реестра WOW64. – vcsjones

+0

Я не уверен. Как мне узнать/указать, какой из них я хочу? – Ted

+0

ОК, похоже, что у вас есть 'Регистрация для COM interop', заботясь об этом для вас. У вас есть подписанная вами подписка под сильным именем (под подпиской)? IIRC, который также необходим для воздействия на COM. – vcsjones

ответ

0

я понял, что был неправ. Мне нужно было изменить некоторые модификаторы доступа в PUBLIC, включая мой конструктор GraphScript().

Смежные вопросы