условные ссылки сборки, основанные на решении - PullRequest
2 голосов
/ 21 апреля 2009

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

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

Ответы [ 4 ]

1 голос
/ 21 апреля 2009

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

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

0 голосов
/ 26 ноября 2009

В http://bytes.com/topic/net/answers/444853-conditional-assembly-reference содержится много информации, которую я нашел очень полезной для решения подобного вопроса (хотя она относится больше к ссылкам на сборки, чем к ссылкам на проекты). MSBuild получить ссылку на сборку из ProjectReference может помочь с мостовым соединением.

0 голосов
/ 21 апреля 2009

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

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

0 голосов
/ 21 апреля 2009

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

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

Например:

  • 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...