ASP.NET编译器抱怨MiniProfiler与框架版本不匹配

30
我有一个MVC3项目,从VS2010升级到了VS2012。该项目还引用了MiniProfiler。我们的应用程序在VS2012中编译和运行良好,没有任何警告/错误。在使用ASP.NET编译器工具时,我得到了以下警告信息:

Microsoft (R) ASP.NET Compilation Tool版本4.0.30319.17929实用程序预编译ASP.NET应用程序版权(C)Microsoft Corporation。保留所有权利。

(0): 警告:以下程序集依赖于高于目标的 .NET Framework 版本,并且在运行时可能无法正确加载,导致失败:MiniProfiler, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3. 依赖项是:System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089。您应确保相关程序集正确针对目标框架,或确保您正在处理的目标框架是相关程序集的框架。

我们没有显式引用System.Data.Linq。在更新到VS2012之前,我们没有任何错误。正如我们的应用程序一样,MiniProfiler版本确实是针对.NET 4.0的。这个警告是什么原因造成的呢?

我已经查看了设置,没有发现任何明显的错误可能导致这个问题... - Marc Gravell
@MarcGravell - 真正奇怪的是,如果我创建一个新项目并使用上面相同的方法,它将可以正常工作... :( - TheCloudlessSky
你可以检查一下bin目录下是否有一些奇怪的dll文件,可能会不小心放在那里。另外,备份一下obj文件夹,然后将其从项目中删除,我发现这样可以帮助解决各种奇怪的问题; o) - Luke Baughan
@bUKaneer - 这不会是 obj 文件夹,因为我们在该目录结构之外运行 aspnet_compiler。我还检查了预编译的 bin 文件夹,没有发现任何奇怪的东西.. :( - TheCloudlessSky
1
我似乎遇到了一个与另一个预编译项目相同的问题。所有的程序集都是基于.Net 4,但它却抱怨版本不匹配。 - AJ Henderson
2个回答

30

通过这篇答案的提示,我最终成功解决了问题。我在web.config中加入了以下<add>行:

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <!-- etc... -->
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <!-- etc... -->
      </assemblies>
    </compilation>
  <system.web>
</configuration>

3

您是否在Web.config文件中更改了targetFramework?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接