В настоящее время я работаю над сценарием сборки для системы, использующей powershell 2.0 и MSBuild. Основная идея заключается в том, что наш библиотекарь может дважды щелкнуть и создать его в различных конфигурациях. К сожалению, по контрактным причинам нам приходится конфигурировать проект с помощью директив препроцессора, а для некоторых конфигураций требуется определить несколько различных констант, что мы делаем с помощью powershell для генерации такой команды, как:
msbuild.exe thing.sln /p:DefineConstants="FOO;BAR" /t:Rebuild
Это прекрасно работает, пока не попадет в проект vb (это монолитная масса vb, c, c ++ и C #). Чем я получаю ошибку вроде:
FOO; ^^ ^^ BAR; недопустимо: символ недействителен
Я предполагаю, что это связано с тем, что VB.NET нравится, когда константы препроцессора разделены двоеточием, а не точкой с запятой. У меня вопрос (ы): есть ли независимый от языка (по крайней мере, VB / C / C ++ / C # независимый) способ определения этих констант препроцессора через DefineConstants? Если так, как бы я поступил?
На уроке доверия к своим собственным инстинктам я обнаружил, что запятая работает.