У меня есть пара проектов в одном решении.Один проект (project_UWP) является проектом запуска, который зависит от других проектов.Построение решения и запуск project_UWP
прекрасно работает в Visual Studio.
Однако в решении есть один проект, назовем его 3dParty_Project
, который содержит файл 3dParty_Helper.cs
.Я не могу поделиться файлом (юридические причины), но этот файл содержит много частей, таких как:
#if !Xamarin
// Do stuff..
#else
// Do some other stuff
#endif
Как я уже говорил ранее, если я собираю project_UWP
, который зависит от 3dParty_Project
всех зависимостей вРешение успешно построено, и я могу запустить свое приложение.На моем сервере сборки я использую MSBuild.
msbuild project_UWP.csproj /t:clean;build /p:RunCodeAnalysis=False /maxcpucount:1
В этом случае я получаю сообщение об ошибке 3dParty_Helper.cs
:
... ошибка CS1513:} ожидается...
Поскольку проекты хорошо построены в Visual Studio, я подозреваю, что msbuild каким-то образом перезаписывает «условные символы компиляции» для проектов зависимостей при сборке.Я использую msbuild из:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ MSBuild.exe
Символы компиляции в project_UWP
:
NETFX_CORE; WINDOWS_UWP; CODE_ANALYSIS
Символами компиляции в 3dParty_Project
являются:
XForms; Xamarin
Я предполагаю, что символы ошибки являются источником ошибки, потому что, глядя на 3dParty_Helper.cs
, я не вижу частей, где отсутствует }
.Вот почему я думаю, что в какой-то момент возникает проблема с такими деталями, как:
#if WPF || Android || IOS || WF
if (/* stuff */)
{
// do stuff
}
else if (/* other stuff */)
#endif
// define stuff
#if !WinRT && !XForms
else
// Do some magic
#endif
Как я могу подойти к этой проблеме?