2010-07-19 103 views
3

我在我的網站項目中添加了一個Script#項目,並創建了一個包含兩個類的小樣本庫。在網站/ Web應用程序項目和Script#/ ScriptSharp之間共享代碼

現在我想從網站代碼中使用這些類。在這種情況下,我創建了一個簡單的對象樹並將其序列化爲JSON(然後由客戶端代碼獲取)。

我嘗試添加對Script#項目的引用。它編譯罰款,但隨後給我一個錯誤關於啓動時:

  • 大會未發現
  • 運行版本不同

它甚至有可能共享腳本#和普通的C#代碼之間?

我使用VS 2010和.NET 3.5(兩個項目)的腳本#0.6。

回答

6

代碼是完全可共享的。我依靠這個來重用通過Web服務發送的數據類。

你可以做的是:

  1. 設置所謂的「共享」的文件夾中SharedTypes.cs單個c鋒利的文件。
  2. 然後對於您的每個項目,右鍵單擊項目節點,選擇「添加」 - >「現有項目」。瀏覽SharedTypes.cs,然後單擊「添加」旁邊的箭頭並選擇「添加爲鏈接」。
  3. 在那裏創建你的共享課程。
  4. 將預處理器符號(例如「WEBSERVER」)添加到您的服務器端項目。如果需要,這可以讓您在項目之間稍有不同的功能。

實施例:

public class MyDataPacket 
{ 
    public int UserId; 
    public string SomeData1; 
    public int SomeData2; 

#if SCRIPTSHARP 
    public MyDataPacket(MyOtherClientSideClass arg) 
    { 
     // init 
    } 
#endif 

#if WEBSERVER 
    public MyDataPacket(MyOtherServerSideClass arg) 
    { 
     // init 
    } 
#endif 
} 

編輯:腳本#現在包含默認的符號SCRIPTSHARP,具有比!WEBSERVER更清晰的意圖。

0

它甚至可以在Script#和普通C#之間共享代碼嗎?

這是不可能的。您的項目必須使用C#2.0,並且必須符合Script#的限制。相反,你可以設置一個automapper.

對我來說,我發現在腳本#中設置第二個域模型更容易,我沒有那麼大的域模型開始。

請記住,Script#只是編譯到Javascript。

+0

也許Script#在某些時候會得到一些方便的功能。儘管它在運行時版本中可能總是落在後面。 – skarmats 2010-07-30 08:06:31

3

在腳本#和c#之間共享代碼的一種可能方式是向源文件添加鏈接。在VS中,您可以將源文件添加到項目中作爲鏈接添加到項目中(該文件未被複制,而是添加了對源文件的引用)。 在c#項目中,以正常方式添加相同的文件。這樣做的結果是,無論何時更改代碼,這些更改都會反映在兩個項目中。編譯該文件時,將使用c#編譯器編譯c#項目中的編譯器,腳本#中的編譯器將使用腳本編譯器編譯。

當然,你必須小心只使用c#和script#共同的特性。這限制了可能的用途,但也許可以通過這種方式共享數據結構。

相關問題