Можно пользоваться библиотекой, такой как Прототип или jQuery, или можно использовать эта удобная функция :
Это возвращает массив.
myPos = findPos(document.getElementById('something'))
x = myPos[0]
y = myPos[1]
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
Я бы определил ваши различные типы сборки в диспетчере конфигурации (меню Сборка → Диспетчер конфигурации ) и установил каждую из необходимых констант для каждого типов сборки.
Затем вы можете попросить каждого члена команды просто выбрать тип сборки, который он хочет выполнить, и он автоматически будет использовать соответствующие константы. (Я думаю, что самый последний использованный тип сборки хранится в файле .suo, который представляет собой «параметры пользователя решения», и вы обычно не проверяете исходный элемент управления, поэтому он будет поддерживаться специально для каждого пользователя).
Вы можете определить константы препроцессора в командной строке компилятора C # с помощью переключателя / define , но у вас возникнет проблема, как это вызвать. Любые изменения, которые вы вносите в свойства проекта, чтобы использовать его, будут сохранены в файле .csproj. Вместо этого вам придется строить все из командной строки, что, я уверен, вам не нужно. Вы также можете определить их в сценариях MSBuild, но у вас будет та же проблема.