【问题标题】:Share code between website/web application project and Script#/ScriptSharp在网站/Web 应用程序项目和 Script#/ScriptSharp 之间共享代码
【发布时间】:2010-07-19 11:50:45
【问题描述】:

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

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

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

  • 找不到程序集
  • 运行时版本不同

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

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

【问题讨论】:

    标签: .net script#


    【解决方案1】:

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

    你可以做的是:

    1. 在“Shared”文件夹中设置一个名为 SharedTypes.cs 的 c-sharp 文件。
    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
    }
    

    编辑: Script# 现在包含一个默认符号 SCRIPTSHARP,其意图比 !WEBSERVER 更清晰。

    【讨论】:

      【解决方案2】:

      在 script# 和 c# 之间共享代码的一种可能方法是添加指向源文件的链接。在 VS 中,您可以在将源文件添加到项目时将其作为链接添加到项目中(不会复制文件,而是添加对源文件的引用)。 在c#项目中,以正常方式添加相同的文件。这样做的结果是,无论何时更改代码,这些更改都会反映在两个项目中。编译文件时,c#项目中的那个用c#编译器编译,script#中的那个用script#编译器编译。

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

      【讨论】:

        【解决方案3】:

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

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

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

        请记住,Script# 只是简单地编译为 Javascript。

        【讨论】:

        • 也许 Script# 在某些时候会在这方面获得一些便利功能。尽管它在运行时版本中可能总是落后。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多