Установка значений во время компиляции в Visual Studio (C #)? - PullRequest
5 голосов
/ 25 ноября 2010

В настоящее время я работаю с C # и разрабатываю несколько приложений Silverlight, которые используют веб-службы sharepoint в качестве источников данных.

Администраторы sharepoint решили, что для "разделения" пользователей они должны были создать один и тот же список sharepoint несколько раз и предоставить пользователям из каждой ветви доступ к соответствующему списку для этой ветви.

Это создает небольшую проблему, потому что мне нужно установить guid для списков sharepoint для каждой ветви и скомпилировать 5 разных версий одного и того же приложения.

В конце концов я решил создать класс ListProperties и передать имя текущей ветви методу, чтобы он возвращал правильный guid.

Итак, теперь я установил переменную (ветвь) в « BRANCH-A », скомпилировал и переименовал приложение в «AppBranchA.xap». Затем сделайте то же самое для каждой ветви.

Есть ли способ передать строку во время компиляции и автоматически изменить переменную (и, надеюсь, имя приложения)?

Я готов выслушать другие способы управления несколькими сборками одновременно.

спасибо,

Ответы [ 3 ]

3 голосов
/ 25 ноября 2010

Предполагая, что вы используете VS 2010

Вы можете использовать Построить конфигурации с именем ветви вместе с config transforms , чтобы изменить значение.Тогда вам просто нужно встроить каждую конфигурацию.

2 голосов
/ 25 ноября 2010

Если вы используете директивы прекомпиляции, вы можете достичь этого.

#if BRANCH_A
 readonly Guid myId = new Guid("some guid");
#endif

#if BRANCH_B
 readonly Guid myId = new Guid("some other guid");
#endif

Если вы хотите стать действительно модным, вы можете даже создавать новые сборки (а не просто отлаживать и выпускать). Затем у вас есть соответствующие директивы для этой сборки.

2 голосов
/ 25 ноября 2010

Одним из способов решения этой проблемы является использование символа условной компиляции для управления тем, какое значение GUID используется для набора специфических для ветви свойств.Например,

class ListProperties {

#if BRANCH-A
  public static readonly GUID BranchGuid = "Guid #1";
#endif

#if BRANCH-B
  public static readonly GUID BranchGuid = "Guid #2";
#endif

}

Это позволяет вам контролировать значение определений ветвления, изменяя определенные символы препроцессора в командной строке.

Другой вариант - использовать файл конфигурациихранить отраслевые данные.Затем вы можете собрать приложение один раз и развернуть его с разными конфигурационными файлами в зависимости от целевой ветви.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...