【问题标题】:Building one web project breaks the compiled version of the second in solution构建一个 web 项目会破坏解决方案中第二个的编译版本
【发布时间】:2016-04-28 18:43:10
【问题描述】:

我有一个包含 30 个项目的大型解决方案,其中 2 个是带有一堆后台类库项目的 Web 项目(MVC 和 WebAPI)。

我设置了 Visual Studio 以在 IIS 中托管 Web 项目。

如果我进行干净构建,然后对整个解决方案进行完整构建,那么通过浏览器访问这两个项目都可以正常工作。 (它们位于 diff 文件夹中并托管在 iis 中的 diff 'domains' 上)

如果我不更改任何代码,只需重建 2 个 Web 项目之一,另一个将停止工作。

需要明确的是,重新构建 WebAPI 项目会导致 MVC 项目出现错误。反之亦然。

我得到的错误是找不到 System.Web.Http.Formatter。详细信息表明定位的程序集版本与参考版本不同。检查 bin 文件夹表明情况并非如此。

【问题讨论】:

  • 你能详细告诉我们确切的错误吗?此外,如果 VS 说这些参考有不同的版本,你可以确定它是。您是否将这些 web api 和 mvc 应用程序托管在 IIS 的同一站点中?。
  • 我在MVC 3.0.0.0和3.0.0.1版本冲突方面也遇到过类似的问题,可能是相关的?
  • 首先,您使用的是哪个版本的 MVC?您的项目还依赖于哪些其他包?

标签: c# iis visual-studio-2015 roslyn


【解决方案1】:

确保所有解决方案的资源都是最新的。如果您使用 Nuget,请更新所有项目中的所有包(先备份!)。听起来您的版本不匹配,其中复制到解决方案输出目录的 DLL 中缺少功能。它可能涉及更改每个项目的 Web.config 中的一些条目,但如果无法访问代码,则很难确定。

更新每个库后报告,并确保解决方案中所有项目的版本匹配。

【讨论】:

  • 感谢您的回复,我现在不在电脑上,明天早上会这样做并提供反馈。
  • 另一件事,请确保检查您的构建顺序。如果您的 MVC 和 WebAPI 项目相互引用,您需要在构建顺序中首先构建依赖项目。它应该是自动设置的,但是在这么大的解决方案中,事情可能会出错。考虑将您的解决方案分解成更小的块以提高性能。您的输出文件夹必须非常堵塞。
  • 另外,如果您使用的是 NuGet,请确保您使用的软件包的安装版本对于两个项目都是相同的。
  • 好的,就是这样,依赖库之一上的 nuget 版本冲突(不在实际的 mvc 或 webapi 项目中)
【解决方案2】:

除了 Apache 和 Steve 的建议之外,我还推荐 deleting the files in your Temporary ASP.NET Files directory。如果您对 here's a good write-up 该文件夹的内容感到好奇。

【讨论】:

  • 谢谢,这是我在寻求帮助之前自己尝试过的事情之一,对未来的谷歌人来说这是一个很好的建议
猜你喜欢
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多