2010-07-19 66 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#共同的特性。这限制了可能的用途,但也许可以通过这种方式共享数据结构。

相关问题