在部署到Azure网站时,必须向System.Runtime添加引用

时间:2014-12-05 19:18:30

标签: c# asp.net azure portable-class-library

网站在本地运行良好,但从Windows Azure网站托管环境中抛出此内容。

  

CS0012:类型' System.Object'在未引用的程序集中定义。您必须添加对程序集的引用,System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'

所以这是一个臭名昭着的消息,并有一个已知的解决方案;

<compilation ... >
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

据我所知,ASP.NET页面/视图在不同的时间编译到控制器和其他逻辑,(vNext最终将解决这个问题),以及上面是为页面编译方面添加引用事情。

但我的问题是:为什么这会在我的开发机器上运行,但需要在WAWS环境中使用这个额外的配置,您认为这是完美的设置?

我想知道目标环境中有什么不同,缺少什么,以及引用便携式库(便携式,意味着它应该只是工作和&#39; #39;在各种环境中)实际上破坏了东西。

此外,为什么当我引用PCL时,在Mscorlib中突然找不到System.Object。曾几何时我曾经理解这一切,然后一切都让人感到困惑。

1 个答案:

答案 0 :(得分:0)

PCL引用system.runtime.dll,而不是mscorlib.dll,当asp.net编译您的视图页面时,它不会添加对system.runtime.dll的引用。在您的情况下,C#编译器抛出错误。但不确定为什么这个问题只发生在WAWS环境中。