У меня есть портал dotnetnuke на сервере в /root/dnn, и я создаю приложение asp.net в С# VS2008, которое мне нужно загрузить в /root/app.
когда я развертываю свое приложение, ему необходимо ссылаться на сборку dotnetnuke.dll из /root/dnn/bin вместо/root/app/bin.
Как я могу управлять этим, не помещая файлы приложения в /root/dnn?
Я попытался установить путь автообновления, а затем после загрузки, удалив файл /root/app/bin/dotnetnuke.dll, чтобы приложение попыталось ссылаться на отсутствующую сборку в файле.. /dnn/bin/dotnetnuke.dll, но "приложение не было предварительно скомпилировано", поэтому я попытался загрузить его без предварительной компиляции, но ссылка не найдена.
В качестве фиолетового Ant, упомянутого выше, либо
То, о чем вы думаете, это <probing privatePath="" />
элемент конфигурационного файла. Но я не думаю, что он доступен для использования в веб-приложениях и (согласно документации) работает только для подпапок.
<configuration>
<runtime>
<assemblyBinding>
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
Почему бы не дать своему приложению свою копию? Это решит все проблемы...
Иными словами, почему ссылка на перекрестное приложение? Это противоречит всем механизмам безопасности IIS и ASP.NET
Я думаю, что ваш лучший выбор с тем, что вы пытаетесь сделать, - установить DotNetNuke.dll в GAC на сервере. Я не верю, что ASP.NET/IIS разрешит доступ к любым сборкам за пределами текущей структуры папок веб-сайтов.
В конце концов, мне пришлось загружать файлы .aspx и .aspx.cs в папку портала и файлы bin в папке dnn bin, добавить несколько строк из моего web.config в dnn web.config и сменить запросы к базе данных записывая их из кода вместо использования объектов набора данных, то есть файлы .xsd,.xss. Мне также пришлось скопировать код из моего App_Code в мои файлы .cs перед загрузкой, потому что С# и VS не могут быть скомпилированы в dnn App_Code.
codeSubDirectories
в web.config для каталога с C #, чтобы он компилировался отдельно.