Дайте этому выстрел:
$firstName = new Zend_Form_Element_Text('firstName');
$firstName->setLabel('First Name')
->setRequired(true)
->addValidator('NotEmpty', true)
->addErrorMessage('Value is empty, but a non-empty value is required.');
ключ - то, что "верный" на блоке проверки допустимости при установке этого на истинный это уничтожит другие проверки после него. Если Вы добавите больше чем один метод проверки, но установите это на ложь, он проверит все методы.
Вы можете добавить в файл app.config дополнительные пути поиска, которые будут использоваться для загрузки сборок. Например,
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;thirdParty" />
</assemblyBinding>
</runtime>
Вы можете увидеть более подробную информацию здесь .
Чтобы автоматически копировать сборки в папку, в которой вы хотите, чтобы они находились, вы можете установить Copy Local
в значение true для всех ссылок и сделать сообщение шаг сборки, чтобы переместить их в подкаталоги.
В качестве альтернативы, вы можете установить для параметра Copy Local
значение false и добавить файлы DLL, на которые есть ссылки, как файлы в проекте в соответствующие подкаталоги, а также задать для Build Action
значение Copy to output directory. (Это сохранит подкаталоги)
Самый гибкий способ заставить среду выполнения найти их - обработать событие AppDomain.AssemblyResolve и вручную загрузить сборку с помощью Assembly.LoadFile . Вашему коду потребуется какой-то способ узнать, какие сборки в каких каталогах.
В своем комментарии вы упоминаете добавление путей и местоположений во время выполнения. Да, можно, но необходимо использовать Assembly.Load () и, возможно, отражение.
Если вы хотите вручную управлять тем, откуда брать сборки, у вас есть две возможности:
Обработать событие AppDomain.AssemblyResolve (как это описано в SLaks). Вот фрагмент кода:
static void Main (string [] args)
{
...
AppDomain.CurrentDomain.AssemblyResolve + = новый ResolveEventHandler (CurrentDomain_AssemblyResolve);
...
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve (отправитель объекта, аргументы ResolveEventArgs)
{
строковые сборкиDir = "ваш_каталог";
Assembly asm = Assembly.LoadFrom (Path.Combine (assemblyDir, args.Name + ".dll"));
вернуть asm;
}
Создайте домен со своими настройками (задав свойства ApplicationBase или PrivateBinPath объекта AppDomainSetup).
Итак, если вы хотите продолжить работу в текущем домене, вы должны использовать метод 1.