#visual-studio #reference #msbuild
Вопрос:
У меня есть проект, содержащий большинство моих функций (основной проект).
Я хочу иметь веб-службу, ссылающуюся на MainProject, и использовать некоторые из этих функций.
Однако я хочу добавить условную компиляцию в MainProject, чтобы не включать все функции и создавать их только в том случае, если они нужны проекту веб-сервиса.
Я добавил одну функцию, подобную этой:
#if WEBSERVICE public void MyApi() { } #endif
И в настройках проекта моего веб-сервиса я попытался добавить константы определения:
lt;ProjectReference Include="....apiMyAPIs.csproj"gt; lt;Projectgt;{ed6ba855-7082-4b28-99a2-3e9fcf810433}lt;/Projectgt; lt;Namegt;APIlt;/Namegt; lt;DefineConstantsgt;WEBSERVICElt;/DefineConstantsgt; lt;/ProjectReferencegt;
Моя цель состоит в том, чтобы добавить силу символа веб-службы, который будет добавлен при создании моего проекта веб-службы.
Это не работает, когда я проверяю вывод сборки, мой символ не добавляется при создании библиотеки dll для проекта.
Я знаю, что мог бы добавить конфигурацию сборки, чтобы решить эту проблему, но, поскольку у меня будет несколько проектов веб-сервисов, я предпочел бы сохранить свои конфигурации сборки небольшими и просто добавлять дополнительный символ, когда это необходимо.
Я также добавил свой символ ВЕБ-сервиса в каждую конфигурацию своего проекта веб-сервиса
lt;DefineConstantsgt;$(DefineConstants);SERVICE_BOTlt;/DefineConstantsgt;
Возможно ли то, чего я пытаюсь достичь?
Комментарии:
1.
DefineConstants
вProjectReference
разделе нет смысла. Вы не можете изменить содержимое библиотеки dll в том месте, где вы ее используете. Вам необходимо определить символ при создании вашего api.2. Если вам нужна функция только тогда, когда она нужна определенному проекту, почему бы не поместить эту функцию в проект, который нуждается в ней, вместо вашего основного проекта?