mvc3 razor页面找不到命名空间

时间:2012-02-22 16:49:28

标签: asp.net-mvc asp.net-mvc-3 assemblies external-assemblies

我在那里读了很多类似的问题,但我无法解决我的特殊问题...... 在我的MVC3项目中,我使用外部库。我可以在任何地方使用这个库,但不能在我的剃刀视图中使用 所以,在SO上阅读一些类似的问题,我发现我应该将这个库注册到<system.web><compilation><assemblies>部分。 为了做到这一点,我最终得到了像我这样的web.config的一部分

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    ... <!-- default assembly registration, like System.Web.something -->
    <add assembly="MailBee.Net.dll, Version=7.1.4.348, Culture=neutral, PublicKeyToken=cd85b70fb26f9fc1" />
  </assemblies>
</compilation>

但仍然无法工作......或者更确切地说,这在运行时分解了所有项目。如果我启动该项目,它会崩溃告诉我Impossibile to load assembly 'MailBee.Net.dll, Version=7.1.4.348, Culture=neutral, PublicKeyToken=cd85b70fb26f9fc1' or one of its dependency
dll肯定是在Web应用程序的/ bin文件夹中,并删除web.config文件中的声明,我在所有项目中但在视图页面中使用它。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

有一些可能的问题:

  1. MailBee.Net.dll对您解决方案中没有的其他dll具有依赖性/要求。
  2. MailBee.Net.dll与您的项目/托管解决方案(visual studio / iis express)不同x86 / x64版本
  3. 此外,在位于 Views 目录中的web.config文件中,您应该添加如下内容:

    <system.web.webPages.razor>
      <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, 
                         System.Web.Mvc, 
                         Version=3.0.0.0, 
                         Culture=neutral, 
                         PublicKeyToken=31BF3856AD364E35" />
       <pages pageBaseType="System.Web.Mvc.WebViewPage" />
         <namespaces>
           <add namespace="<NamespaceYouNeedInYourViews>" />
         </namespaces>
       </pages>
    </system.web.webPages.razor>
    

答案 1 :(得分:0)

我明白了! 这不是依赖关系的问题,也不是在某处声明程序集或命名空间的问题......只是因为某些原因,在构建项目时,该库未被复制到bin文件夹中! 或者更好的是,原因是引用库上的“复制本地”属性设置为false,但我不明白为什么:我尝试过的每个其他第三方库都没有这种行为......