2013-05-30 58 views
-4

我需要C#代碼將程序集添加到GAC。有誰知道如何使用C#將DLL添加到GAC如何將DLL添加到GAC並使用exe嵌入

+0

這是您將作爲安裝程序的一部分執行的操作,而不是應用程序在運行時執行的操作。 – Belogix

+2

@Belogix:不;這是你根本不會做的事情。 – SLaks

+0

讓我再解釋一下。我創建了一個包含所有這些東西的.exe文件。所以當我運行這個exe時,它應該會自動打開一個視頻。所以請給我建議任何解決方案。 –

回答

3

否;您無需向GAC添加任何內容。

您可以直接調用Assembly.Load()直接從嵌入在文件中的字節數組中加載程序集。
請注意,在JITer遇到來自這些程序集的任何類型之前,您需要這樣做。

+0

謝謝爲了幫助,我會試試 –

5
Publish publish = new Publish(); 

publish.GacInstall(System.IO.Path.GetFullPath("MyAssembly.dll")); 

命名空間:System.EnterpriseServices.Internal

大會:的System.EnterpriseServices(在System.EnterpriseServices.dll)

+0

你需要一個實例。 http://msdn.microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx – SLaks

+0

@SLaks你是什麼意思? – MikroDel

+0

「Publish」類的一個實例。 – SLaks

1

當您包括您的視頻文件,你必須包括它作爲「嵌入式資源」。 如果您不知道如何操作,請按以下步驟操作。

  1. 將您的視頻文件添加到項目。
  2. 點擊視頻文件。轉到屬性。
  3. 選擇生成操作「嵌入的資源」

然後使用下面類檢索視頻的字節數組。我相信你可以照顧其他人。

using System.IO; 
    using System.Reflection; 

    namespace MyProject.Video 
    { 
     class MyVideoClass 
     { 
      private const string videoExtract = "MyProject.Video.MyVideo.dat";  

      public byte[] GetStream() 
      { 
       try 
       { 
        var memoryStream = new MemoryStream(); 
        Stream sourceStream = null; 

        sourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(videoExtract); 

        if (sourceStream != null) sourceStream.CopyTo(memoryStream); 

        return memoryStream.ToArray(); 
       } 
       catch 
       { 
        return null; 
       } 
      } 
     } 
    }