Почему компилятор VS жалуется на то, что не находит сборку при использовании вложенных файлов конфигурации, но у механизма ASP.NET в IIS нет проблем? - PullRequest
4 голосов
/ 20 января 2012

Я сейчас смотрю на web.config в ASP.NET WebForms .NET 3.5, в котором все основные конфигурационные файлы разбиты следующим образом:

<configuration>
<system.web>
    <membership configSource="config\membership.config"/>
    <authentication configSource="config\authentication.config"/>
    <machineKey configSource="config\machineKey.config"/>
    <compilation debug="true">
        <assemblies>
            <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
    </compilation>
    <customErrors mode="Off"/>
    <authorization>
        <deny users="?"/>
    </authorization>
    <roleManager enabled="true" cacheRolesInCookie="true"/>
    <pages configSource="config\pages.config"/>
    <httpHandlers configSource="config\httpHandlers.config"/>
    <httpModules configSource="config\httpModules.config"/>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
</system.web>
</configuration>

и если я скомпилирую исходный код в VS 2010, он жалуется на невозможность найти библиотеку .NET DataVisualization (Error 14 Could not load file or assembly 'System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. sourcecodefile line), и если я скомпилирую ее с помощью aspnet_compiler или просто уроню в IIS, все будет нормально.

Как я могу предотвратить это в VS?

Должен ли я вернуть эти параметры конфигурации обратно в web.config?

У Casini нет проблем с этой конфигурацией, ни с сервером разработки IIS, и файл НЕ находится в GAC (в любом случае, не версия 3.5, а 4.0), и я не буду помещать это туда для этого одна проблема (я перенесу все обратно в собственно web.config) и файл dll будет в папке bin.

1 Ответ

1 голос
/ 30 января 2012

Вам необходимо добавить ссылку на сборку System.Web.DataVisualization в ваш проект Visual Studio. Visual Studio не компилируется против любых сборок, не перечисленных в папке «Ссылки».

В обозревателе решений в своем проекте щелкните правой кнопкой мыши папку «Ссылки» и выберите «Добавить ссылку ...»

enter image description here

Выберите и добавьте отсутствующую сборку.

enter image description here

Проблема решена.

...