【问题标题】:Why can't I use VS2010's "Add View" Feature in my MVC application?为什么我不能在我的 MVC 应用程序中使用 VS2010 的“添加视图”功能?
【发布时间】:2011-06-30 00:44:58
【问题描述】:

这很奇怪,

我有一个包含两个项目的解决方案...

Genesis.Domain - 是一个类库,其中包含存储库。

Genesis_0_02 - 拥有实际的 MVC 控制器、视图等...而且它是启动项目

我正在修改存储库和 mvc 项目。我能够添加几个视图,但随后自动视图生成(右键单击 +“添加视图”)停止工作。

弹出一个错误对话框,其中包含错误和堆栈跟踪。我不能复制粘贴它,但基本上它说:

C:\pathto\CodeTemplates\AddView\Empty.tt(-1,-1): error : An exception was thrown 
while running the transformation code. The process cannot continue. The following
exception was thrown:
System.IO.FileNotFoundException: Could not load file or assembly 'Genesis.Domain,
Version=1.0.0.0, Culture Neutral, etc.etc.' or one of its dependencies. The system
cannot find the file specified.
File name: 'Genesis.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

后面是我无法复制粘贴的堆栈跟踪。

是什么原因造成的? Genesis.Domain 被引用并且在所有开发过程中都被引用。项目/解决方案编译良好,运行良好。

我可以使用 Genesis_0_02 命名空间中的模型/类创建视图。但不是来自 Genesis.Domain 命名空间。 (尽管 Genesis.Domain 类确实显示在列表中。)

此外,“添加视图”课程列表中还弹出了不寻常的课程。它们看起来像这样:

Genesis_0_02.Controllers.AdminMemberController+<>c__DisplayClass8+<>c__DisplayClasse>

我不知道这些是从哪里来的。

这可能是什么原因造成的?如何让“添加视图”功能再次发挥作用?

编辑

顺便说一句:我可以手动创建新视图并且它们确实有效。

【问题讨论】:

  • Genesis_0_02 项目中是否有“外部依赖项”快捷方式文件夹?如果是这样,当你双击它时会发生什么?

标签: asp.net-mvc visual-studio-2010 asp.net-mvc-2


【解决方案1】:

我遇到了同样的问题。一位同事通过调试模板流程解决了这个问题。他发现 VS2010 总是在本地文件夹中寻找 dll,在我们的例子中是:

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\"

在此位置创建文件夹后,我们将 Dll 及其依赖项放在此文件夹中,错误就消失了。

它认为这是VS2010中的一个明确的错误。

我们必须在上述路径中添加与引用的 Dll 名称匹配的文件夹。

【讨论】:

    【解决方案2】:

    这种行为很奇怪。我见过 VS2008 的怪事。

    尝试以下几种方法

    1] 创建一个新的 MVC Web 项目并添加对 - Genesis.Domain 的引用。并查看从控制器添加视图是否适用。

    如果是,则在您的工作项目中验证 web.config 文件(位于 Views 文件夹下)中的以下配置 - 特别是

    PageParserFiltertype

    <pages
            validateRequest="false"
            pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
            pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
            userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <controls>
            <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
          </controls>
        </pages>
    

    如果没有 然后尝试在开发机器上重新安装 Framework 和 VS2010 MVC 2 / 3。

    你也可以使用下面的链接 http://bradwilson.typepad.com/blog/2010/03/diagnosing-aspnet-mvc-problems.html

    祝你好运!

    【讨论】:

      【解决方案3】:

      听起来对您的类库项目的引用被搞砸了。您是否尝试过从解决方案中删除类库项目,然后将项目重新添加到解决方案中?

      我自己从未遇到过这个问题,但这是从这些错误消息中唯一能想到的。

      【讨论】:

      • 不...不走运。我从 Genesis_0_02 中删除了 Genesis.Domain 引用,重新编译(重新编译失败),然后将其添加回来,重新编译(成功),仍然没有添加视图。
      • 我们好奇的是,您的 MVC 项目文件夹是否有 CodeTemplates 文件夹,或者是引用埋在 Program Files/Microsoft Visual Studio/ 中的 CodeTemplates 文件夹的错误消息...
      • 它引用了被掩埋的那个
      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2021-05-03
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2018-12-29
      相关资源
      最近更新 更多