在网站/ Web应用程序项目和Script#/ ScriptSharp之间共享代码

时间:2010-07-19 11:50:45

标签: .net script#

我在我的网站项目中添加了一个Script#项目,并创建了一个包含两个类的小样本库。

现在我想从网站代码中使用这些类。在这种情况下,我创建了一个简单的对象树并将其序列化为JSON(然后由客户端代码提取)。

我尝试添加对Script#项目的引用。它编译得很好,但在启动时会给我一个错误:

  • 未找到装配
  • 运行时版本不同

甚至可以在Script#和普通C#之间共享代码?

我在VS 2010和.NET 3.5(两个项目)中使用脚本#0.6。

3 个答案:

答案 0 :(得分:6)

代码完全可以共享。我依靠这个来重用通过Web服务发送的数据类。

你能做的是:

  1. 在“共享”文件夹中设置名为SharedTypes.cs的单个c-sharp文件。
  2. 然后,对于每个项目,右键单击项目节点,选择“添加” - > “现有项目”。浏览SharedTypes.cs,然后单击“添加”旁边的向下箭头,选择“添加为链接”。
  3. 在那里创建您的共享课程。
  4. 将预处理程序符号(例如“WEBSERVER”)添加到服务器端项目中。如果需要,这允许您在项目之间具有稍微不同的功能。
  5. 示例:

    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更清晰。

答案 1 :(得分:3)

在脚本#和c#之间共享代码的一种可能方法是添加源文件的链接。在VS中,您可以在将项目添加到项目时将源文件作为链接添加到项目中(文件未复制,而是添加对源文件的引用)。 在c#项目中,以正常方式添加相同的文件。结果是,每当您更改代码时,这些更改都将反映在两个项目中。编译文件时,c#项目中的文件将使用c#编译器进行编译,脚本#中的文件将使用脚本#compiler编译。

当然,您必须小心只使用c#和脚本#常用的功能。这限制了可能的用途,但也许数据结构可以这种方式共享。

答案 2 :(得分:0)

甚至可以在Script#和普通C#之间共享代码?

这实际上是不可能的。您的项目必须使用C#2.0,并且必须符合Script#的限制。相反,您可以设置automapper.

对我来说,我发现在Script#中设置第二个域模型更容易,我没有那么大的域模型开始。

请记住,脚本#只是编译为Javascript。