Когда страница компилируется, она просматривает все сигнатуры методов и по существу блокирует их.Если вы измените сигнатуру вызываемого метода, страница не сможет найти его, пока он не будет перекомпилирован.
Например, допустим, у вас есть класс, такой как
public class Dog {
public void Walk(Int32 distance) {
/// blah blah
}
}
и вы вызываете это в коде страницы:
protected void MyButtonClick(....) {
Dog d = new Dog();
d.Walk(3000);
}
Когда это скомпилируется, страница будет ожидать метод ходьбы с сигнатурой Int32.
Теперь, скажем, мы изменим метод ходьбыв классе Dog:
public void Walk(Int16 distance) {
// blah blah
}
(да, глупые изменения, но это выдвигает на первый план проблему).На этом этапе страница не сможет найти метод Walk, который принимает параметр Int32 и, следовательно, будет взорван, как и должно быть.
Может показаться приятным просто развернуть одну сборку, которую вы считаете нужнойнужно, но в том-то и дело, что в коде может произойти любое количество изменений, так что это очень плохая практика.
Гораздо лучше убедиться, что весь проект согласован.Даже большие сайты не занимают так много времени для развертывания.
Конечно, я думаю, что использование проектов веб-сайтов в любом случае является плохой практикой.Развертывая нескомпилированный код на сервере ( очень плохо ), VS ищет ваш диск для обновления ссылок в проекте, даже если вы явно указали ему, какую сборку использовать ( обычно неожиданно, никогда не хорошо ), имея весь основной код в общей папке app_code ( ограничение ) и т. д. Я мог бы продолжать и продолжать здесь ...