【问题标题】:mvc3 razor page don't find Namespacemvc3 razor 页面找不到命名空间
【发布时间】:2012-02-22 16:49:28
【问题描述】:

我在那里阅读了很多类似的问题,但我无法解决我的特定问题...... 在我的 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 文件中的声明,我会在所有项目中使用它,但在视图页面中。 有什么想法吗?

【问题讨论】:

  • 外部程序集是否有任何您尚未添加到 MVC 项目中的依赖项?
  • @JamesNail:正如我对 Erik 的要求,这应该使该库无法在项目中的任何地方(例如在我的控制器中)使用,而不仅仅是在剃刀视图中......

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


【解决方案1】:

有几个可能的问题:

  1. MailBee.Net.dll 对另一个不在您的解决方案中的 dll 有依赖/要求。
  2. MailBee.Net.dll 与您的项目/托管解决方案 (visual studio/iis express) 的 x86/x64 版本不同

此外,在位于 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>

【讨论】:

  • 首先为您提供两点:这不应该使所有代码都不适用于该库吗?我的意思是,如果我不尝试在我的 razor 视图上使用这个库,一切都会正常工作,例如,我会在我的控制器类中广泛使用它。
  • 至于第二个建议,应该这样做只是为了避免每个页面上需要该命名空间的using 语句,对吗?
  • 如果它在您的控制器中工作正常,那么我不会将它添加到程序集中,我会将您需要的命名空间添加到 web.config。
  • 是的,它避免了在每个剃须刀视图上使用using statemtn。
  • 尝试避免在程序集中声明并将其放在命名空间声明中......没有任何变化。此外,在剃刀视图中,我没有智能感知为该类的对象工作,而在控制器中按预期工作
【解决方案2】:

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

【讨论】:

  • 是的,就可以了。奇怪的是设置为不复制本地。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2018-01-06
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多