簡體   English   中英

在兩個c#程序集之間共享代碼

[英]Sharing code between two c# assemblies

1)我有一個名為SocketServer的項目,其中有一個Class Room ,這個項目是一個編譯的exe,也可以編譯為DLL。

2)在另一個名為MyGame的項目中,有一個名為MyAwesomeGame的類,我需要在其中執行以下操作:

public class MyAwesomeGame
{
    public Init(Room room)
    {
        //I can get data from Room
    }
}

現在,MyGame Project被編譯成MyGame.DLL,並放置在相對於SocketServer.exe的某個地方,SocketServer.exe在運行時加載MyGame.DLL並實例化MyAwesomeGame類並調用Method Init並將room作為參數傳遞。 代碼是SocketServer項目是這樣的:

public class Room
{
     private InstantiateGameRoom()
     {
          //Load External MyGame.DLL Assembly 
          Task<MyAwesomeGame> task = Task<MyAwesomeGame>.Factory.StartNew(() => (MyAwesomeGame)Activator.CreateInstance(classType, new object[] { this }));
          MyAwesomeGame instance = task.result;
          instance.init(this);
     }
}

所以我的問題是我怎么能獲得MyGame項目在教室的參考? 我應該添加我的SocketServer項目的引用嗎? 如果我這樣做,它會不會被我的MyGame.dll編譯?

ps:我還打算將socketserver.dll作為API分發給第三方用戶。

您應該將SocketServer生成的dll添加到MyGame項目的引用中。 右鍵單擊MyGame,單擊Add,單擊References ...,在對話框中選擇Projects並選擇SocketServer項目。

我相信確保SocketServer是MyGame項目的依賴性以確保在MyGame之前構建SocketServer也是明智之舉。

- 編輯:請閱讀我在Sushant澄清之后做出的評論。 或直接去Sid的回答。 :-)

我認為在兩個或更多項目中共享Model的正確方法是將所有模型和相對邏輯提取到一個單獨的項目中

然后,您可以從需要使用該數據的每個項目中引用該項目。

我正在討論的場景如下:

  1. ModelsProject (包含模型和業務邏輯)
  2. ProjectA (依賴於ModelsProject)
  3. ProjectB (依賴於ModelsProject)


方案

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM