【问题标题】:After changing MVC project output path, assemblies not found更改 MVC 项目输出路径后,未找到程序集
【发布时间】:2016-02-22 14:42:06
【问题描述】:

我最近更改了我们 MVC 网站解决方案中一些项目的输出路径,以使其标准化。例如,调试配置的主要项目从bin\ 更改为bin\x64\Debug\。我通过 GUI 访问更改了此设置,方法是右键单击项目并选择属性。

我可以毫无错误地重建所有内容,但是当我启动网络应用程序时,我得到:

Could not load file or assembly 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

...

=== Pre-bind state information ===
LOG: DisplayName = System.Web.Mvc, Version=4.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/bookshelf/Bookshelf/
LOG: Initial PrivatePath = C:\bookshelf\Bookshelf\bin
Calling assembly : (Unknown).
===

看起来好像 asp.net / IIS 仍在 bin 文件夹中查找? 我已经尝试删除 user/appdata/local 中的所有临时文件,在解决方案上重新构建所有文件,然后重新启动 Visual Studio。我还尝试从解决方案的 .vs 文件夹中删除所有内容,并删除项目的 csproj.user 文件。

这些 dll 位于文件系统上的 bin/x64/Debug 文件夹中,正如输出路径设置所预期的那样。

【问题讨论】:

  • 你为什么期望 VS 在运行时在 bin\x64\Debug\ 文件夹中找到程序集?它不是在那个位置寻找他们。
  • 由于更改了输出路径属性,这就是它们在构建发生时结束的地方。调试版本是否应该将它们直接放在 /bin 文件夹中?
  • 您混淆了两件事,即VS存储编译过程结果的位置,以及VS在运行时搜索必要程序集的位置。它们不一样。

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

看起来好像 asp.net / IIS 仍在 bin 文件夹中查找?

当然,这是 ASP.NET 寻找程序集的位置。因此,如果您希望 Web 应用程序正常工作,请确保它们位于此文件夹中。您不可能期望 ASP.NET 会在某些非标准位置(例如 bin\x64\Debug)进行查找。如果您需要它在某些自定义位置查找程序集,您可能需要编写自定义程序集加载器。

【讨论】:

  • 所以 Debug 构建的输出路径应该是 bin/ ?
  • @jackmott 对于网络应用程序,是的,应该是。
  • 是的,这应该是 ASP.NET 应用程序的输出。
猜你喜欢
  • 2016-10-05
  • 2018-05-26
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 2018-10-26
  • 2023-04-08
  • 2014-04-12
相关资源
最近更新 更多