Совместное использование кода между сайтом / проектом веб-приложения и Script # / ScriptSharp - PullRequest
3 голосов
/ 19 июля 2010

Я добавил проект Script # в свой проект веб-сайта и создал небольшую примерную библиотеку с двумя классами.

Теперь я хочу использовать эти классы из кода веб-сайта.В этом случае я создал простое дерево объектов и сериализовал его в JSON (который затем получал бы код на стороне клиента).

Я попытался добавить ссылку на проект Script #.Он хорошо компилируется, но при запуске выдает ошибку:

  • Сборка не найдена
  • Отличается версия во время выполнения

Можно ли даже поделиться кодоммежду Script # и обычным C #?

Я использую Script # 0.6 с VS 2010 и .NET 3.5 (оба проекта).

Ответы [ 3 ]

6 голосов
/ 04 ноября 2010

Код полностью разделяемый. Я полагаюсь на это для повторного использования классов данных, отправленных через веб-сервис.

Что вы можете сделать:

  1. Установите один файл c-sharp с именем SharedTypes.cs в папке «Shared».
  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.

3 голосов
/ 15 августа 2010

Один из возможных способов поделиться кодом между script # и c # - добавить ссылку на исходный файл. В VS вы можете добавить исходный файл в проект в качестве ссылки, когда добавляете его в проект (файл не копируется, а вместо этого добавляет ссылку на исходный файл). В проекте c # этот же файл добавляется обычным способом. В результате, когда вы меняете код, эти изменения будут отражены в обоих проектах. Когда файл скомпилирован, тот, что в проекте c #, будет скомпилирован с помощью компилятора c #, а тот, что в #, будет скомпилирован с помощью компилятора #.

Конечно, вы должны быть осторожны, чтобы использовать только те функции, которые являются общими для c # и script #. Это ограничивает возможное использование, но, возможно, структуры данных могут быть разделены таким образом.

0 голосов
/ 28 июля 2010

Можно ли даже поделиться кодом между Script # и обычным C #?

Это не совсем возможно. Ваш проект должен быть в C # 2.0 и должен соответствовать ограничениям Script #. Вместо этого вы можете настроить autopper.

Мне было проще настроить вторую модель домена в Script #, у меня не было такой большой модели домена для начала.

Имейте в виду, что Script # просто компилируется в Javascript.

...