ASP.NET компиляция и отдельные сборки - PullRequest
0 голосов
/ 08 июля 2010

Я не знаком с тем, как ASP.NET (используя MVC) работает с .dll файлами, и хотел бы знать, почему происходит следующее:

В обоих сценариях есть основное приложение MVC ивторичное приложение MVC (MyApps.Secondary).И в обоих случаях у вторичного приложения есть жестко закодированные местоположения вида в действиях.

Сценарий один

Когда я перемещаю .dll вторичного приложения в мойВ папке bin основного приложения MVC я могу перейти к контроллерам во вспомогательном приложении.

Сценарий два

Если переместить .dll дополнительного приложения впапка другая (называемая extras) в моем основном веб-приложении, затем мне нужно сделать следующее, чтобы легко перейти к одному из действий / контроллеров внутри дополнительного приложениячерез основное веб-приложение:

1- Добавить MyApps.Secondary в разделе сборок раздела компиляции

<compilation debug="true" targetFramework="4.0">
    <assemblies>
     <add assembly="MyApps.Secondary"/>

2- Добавитьпапка extras (папка, в которой находится MyApps.Secondary) в элементе исследования

<probing privatePath="bin;extras"/>

Наверное, мой вопрос: почему оба этих сценария работают и зачем мне делать дополнительныеработа в сценарии два?

В ответе на этот вопрос об элементе компиляции говорится, что элемент <compilation><assemblies> предназначен для компиляции файлов .cs и .vb, но в обоих моих сценариях я неесть любой тип файлов.Может быть, он используется для компиляции .aspx/.ascx страниц для дополнительного приложения?Если он действительно компилирует .aspx/.ascx файлов, почему мне не нужно включать сборку в первый сценарий?

1 Ответ

1 голос
/ 08 июля 2010

У вас действительно есть файлы .cs и .vb во вторичном приложении, однако они уже скомпилированы в .dll. Каждый файл контроллера, модель, частичный класс, хранилище и т. Д. Являются файлами .cs или .vb.

Чтобы ответить на ваш вопрос о том, почему вы должны выполнять дополнительную работу, .NET по умолчанию просматривает папку bin для сборок, которые нужно включить при сборке приложения для среды выполнения (и некоторых других мест на самом сервере, но это не так. отношение к вашему вопросу). Если вы хотите включить сборку, которой нет в папке bin, вы должны указать ей: а) зарегистрировать ее, используя полное имя, и б) где находится сборка.

Взгляните на эту ссылку из другого ответа в ссылочном посте, особенно последних нескольких параграфов о разделе сборок в web.config. Это может помочь вам прояснить это (и мои разговоры).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...