你好我想用C#和Visual Studio 2005如何讓C#COM DLL相當於ATL COM C++
首先,我做了接口 「CSharpServer.cs」
<code>
using System;
using System.Runtime.InteropServices;
namespace CSharpServer
{
[ComVisible(true)]
[Guid("DBE0E8C4-1C61-41f3-B6A4-4E2F353D3D05")]
public interface IManagedInterface
{
int PrintHi();
}
[ComVisible(true)]
[Guid("C6659361-1625-4746-931C-36014B146679")]
public class InterfaceImplementation : IManagedInterface
{
public int PrintHi()
{
Console.WriteLine("Hello!");
return 33;
}
}
}
</code>
我開發一個COM編譯。輸出是:csharp_server.dll。之後,我做了:regasm csharp_server.dll/TLB /代碼庫
輸出是:
... RegAsm:警告RA0000:註冊一個無符號的組合與 /代碼庫可以CA 使用裝配干涉與其他應用程序可能 安裝在 同一臺計算機上。/codebase開關僅用於 ,帶有簽名 程序集。請給你的大會一個強有力的名字,並重新註冊 它。 類型註冊成功...
1ª問題:我必須簽署?怎麼樣?
2ª問題:由作者刪除。
3ª問:我可以只運行由Visual Studio 「regasm」 命令提示符。很快,如果我使用C#開發COM組件並分發給客戶端,那麼它還必須安裝Visual Studio?如果客戶剛剛安裝了Delphi,並且想要使用組件,它將不得不安裝Visual Studio?
4ªVisual Studio內部的C#,我嘗試添加COM引用,但說:
可以 不能添加到 'csharp_server' 的引用。該ActiveX類型庫 「XXX \ csharp_server.tlb」是從.NET組件出口 ,不能 加入作爲參考。相反,向.NET程序集添加引用 。 但是在「.NET參考」中。我看不到組件「csharp_server」。
什麼我做錯了或者忘記?
在此先感謝。
謝謝。它解決了。 – Cobaia
#1ª工程。我更改了「AssemblyInfo.cs」並使用命令「sn -k keyPair.snk」生成密鑰對#2ª對此問題抱歉,真的出來了。我將編輯帖子。 #3ª雖然我還沒有生成數據包。我認爲這會按照你說的方式工作。謝謝#4ª完美!我想我明白了。 – Cobaia