2011-02-17 24 views
0

嘿,我想知道你們是否可以看到有什麼問題/提出解決方案。註冊了一個COM組件,但只能在開發計算機上工作

我有一個COM,我用C#建立了一個DLL組件,我試圖擺脫的Silverlight外的瀏覽器中的COM對象。我希望siverlight應用程序可以在計算機之間移動,所以我把所有必要的文件放在一個zip文件中,以及一個批量安裝程序,它會執行以下注冊程序集:

cd%windir%\ Microsoft.NET \ Framework \ v4 .0.30319 \ RegAsm.exe「%USERPROFILE%\我的文檔\作業時鐘\ windowsHook.dll」/TLB/NOLOGO

我的應用程序找到組件和它的作品我的開發計算機上的罰款,但是當我將我的應用到測試計算機(以及dll和任何其他必要文件),我的批處理文件表示它已成功註冊,但應用程序未找到它。

然而,當我重建測試計算機上用C#的組裝和更換i。從dev的計算機與所述重建的dll移動的DLL中,應用程序發現它細。如果他們不需要使用C#重新編譯程序集,如果他們希望使用我的應用程序,那對我的客戶來說很方便,所以我想知道是否有辦法解決這個問題。

我看了一會兒這個問題,並認爲這可能是因爲我的程序集並不是一個強有力的命名程序集,因爲我認爲C#會自動執行此操作,所以我嘗試在我的批處理文件中執行此操作,識別生成加密密鑰所需的'al'和'sn'命令以給程序集一個強名稱,並且我嘗試在C#項目屬性的'簽名'選項卡中的 中執行該操作,但我遇到了同樣的問題。任何想法如何解決這一問題?

在此先感謝

回答

1

當您使用VS重建時,它的工作原因是因爲它使用/ codebase選項運行Regasm.exe。如果您不打算將程序集放入GAC,則爲必填項。

0

C#不會自動給組件一個強名稱。如果您使用的是Visual Studio,請打開項目的「屬性」頁面,然後查看「簽名」選項卡下的內容。選中籤名程序集,然後生成一個新的強名稱密鑰文件。建立你的項目,你應該能夠做你需要做的與你現有的批處理文件。

+0

感謝,我得到了現在的DLL強命名,我想我不得不使用批處理文件命令:d,如果你不打算把組件安裝到GAC – Austin 2011-02-18 00:09:32

+0

強名稱不是必需的。 – sharptooth 2011-02-18 06:00:39

相關問題