2009-04-21 6 views
2

У меня довольно большое решение, состоящее из 10 различных проектов. До сих пор мы поставляли целое решение в целом клиентам, но мы занимаемся доставкой разделенной версии нашего программного обеспечения.условные монтажные ссылки на основе решения

С этой целью я хотел бы исключить несколько проектов из решения. Я знаю, что вы можете запретить создание проектов в диспетчере конфигурации решений. Используя макросы, все ссылки на код могут быть отключены, если выбрана разделенная конфигурация. К сожалению, это не позаботится о ссылках на проект. Могу ли я сделать эти ссылки условными в зависимости от выбранной конфигурации?

ответ

1

Это должно быть довольно простое дело чтобы удалить ссылки проекта из файла проекта с помощью небольшого скрипта - это будет просто удаление строк, добавляющих эти ссылки. Формат файла проекта довольно прост.

Я подозреваю, что это может быть самым простым решением.

+2

Я бы предпочел статическое решение для динамичного, лично. Запуск макросов в ваших файлах проектов - хороший способ застрелить себя в ноге. – Randolpho

+0

Ну, я никогда не предлагал реальных макросов - просто скрипты, которые знали, что удалить. Я подозреваю, что это может оказаться более простым решением (и тем, что облегчает дальнейшую разработку), чем использование нескольких решений. –

0

Ваш лучший выбор - создать отдельные проекты для вашего «урезанного» решения, которое ссылается только на те другие проекты, которые вы хотите. Ссылка на тот же код. Создайте отдельное решение для совместного хранения этих проектов.

Все они могут жить вместе в одной структуре папок.

Например:

  • MySolution/MySolution.sln
  • MySolution/MyStrippedDownSolution.sln
  • MySolution/MyProject1/MyProject1.csproj
  • MySolution/MyProject1/MyStrippedDownProject1.csproj
  • MySolution /MyProject1/MyClass1.cs
  • MySolution/MyProject2/MyProject2.csproj
  • MySolution/MyProject2/MyStrippedDownProject2.csproj
  • MySolution/MyProject2/MyClass2.cs
  • MySolution/MyProject2/MyProject3.csproj
  • MySolution/MyProject2/MyClass3.cs

    • MyProject1 и MyStrippedDownProject1 ссылка MyClass1
    • MyProject2 и MyStrippedDownProject2 ссылка MyClass2
    • MyProject3 и MyStrippedDownProject3 ссылка MyClass3
  • ссылки MySolution MyProject1 и MyProject2 и MyProject3

  • ссылки MyStrippedDownSolution MyStrippedDownProject1 и MyStrippedDownProject2
  • MyProject1 ссылки MyProject2 и MyProject3
  • MyStrippedDownProject1 только ссылки MyStrippedDownProject2 - это не ссылаются - MyProject3
+0

Это не сработает, поскольку один из проектов - это система меню, которая ссылается почти на все другие проекты. – Wouter

+0

Я не следую. Как это не сработает? Вы копируете файл проекта, переименовываете его «StrippedDownProject» или что-то еще, и удаляете ссылки, которые вы не хотите. – Randolpho

0

Я думаю, что это нужно делать, когда вы строите свои проекты для производства.Просто приложите весь код, который должен исчезнуть между IF уровня компилятора, который проверяет определенную директиву компилятора. Если включено, код между IF и ENDIF не будет компилироваться. Это работает только для файлов кода.

Для чего-то другого, что вам нужно вынуть, просто создайте свой собственный путь, в зависимости от формата файла, как упоминал Джон Скит. Но после того, как вы добавили это в скрипты сборки, вам больше не нужно это делать - никаких конфигураций переключения и т. Д.

Смежные вопросы