1

VB6 で使用しようとしている .Net 機能がいくつかあります。私はいくつかのチュートリアルに従いました。ここの式を使用して成功するテスト プログラムを作成しました: http://www.codeproject.com/Articles/3511/Exposed-NET-Components-to-COM

ただし、実際のプロジェクトで実行しようとすると、テスト ファイルのように ProgId がレジストリに表示されません。プロパティ ComVisible == true を確認しました

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();
    }
}
}

そして私の天才...

using System;

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

ここで欠けているパズルのピースがわかりません

編集: 実際には Guid はレジストリに表示されますが、Progid はまだ表示されません。アイデア/提案はありますか?

また、これを行うようにしてください: com 相互運用に登録済み

4

1 に答える 1

0

私は何が間違っていたのかを理解しました。GraphScript()コンストラクターを含め、いくつかのアクセス修飾子を PUBLIC に変更する必要がありました。

于 2013-08-21T16:08:19.117 に答える