无法加载类型' System.Runtime.CompilerServices.ExtensionAttribute'从汇编,但它不是mscorlib

时间:2016-04-24 02:20:46

标签: c# asp.net-mvc

当我尝试运行Visual Studio 2013 Web应用程序时收到此异常消息:

"Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Bridge, Version=1.0.1.30841, Culture=neutral, PublicKeyToken=null'."

我发现有很多关于此属性的页面在4.0和4.5之间移动,但我运行的是.NET 4.6.1,并将程序集编译为4.6.1。此外,这个错误不是关于mscorlib,而是关于我自己构建的程序集,名为Bridge。我不明白为什么我的程序集中有对System.Runtime.CompilerServices.ExtensionAttribute的引用,我不知道应该怎样做才能使它停止。建议?

2 个答案:

答案 0 :(得分:0)

您的Bridge程序集可能会引用一个以net40为目标的程序集。它可以是像这个例子中的NuGet包:

<package id="Newtonsoft.Json" version="5.0.8" targetFramework="net40" />

如果是这种情况更新的NuGet包至少定位net45

仅供参考:在VB.NET中创建扩展方法时需要此属性。

这是一个例子。

Imports System.Runtime.CompilerServices

Module StringExtensions

    <Extension()>
    Public Function IsNullOrEmpty(ByVal value As String) As Boolean

        IsNullOrEmpty = String.IsNullOrEmpty(value)

    End Function

End Module

答案 1 :(得分:0)

&#34;桥&#34;可能是集会的坏名字。我在本地NuGet服务器上安装了Bridge,因此我可以在我的几个项目中使用它。默认情况下,为VS 2013配置的NuGet存储库中有一个Bridge.NET。

我想我正在更新我的解决方案中的其他NuGet软件包并点击了#34; Update All&#34;按钮。由于我的项目中有一个Bridge,并且更新列表中有一个Bridge.NET,Bridge.NET的程序集已包含在我的项目中,我不知道。我已经清理了项目并重建了,但是没有从bin文件夹中删除Bridge.NET程序集。我在文件夹中看到一个名为Bridge.Html5.dll的程序集,我并不打算在那里。我认为它是Bridge.NET的一部分。我擦除了bin文件夹,重建了,项目运行了。

相关问题