部署到 Azure 网站时,您必须向 System.Runtime... 添加引用
Posted
技术标签:
【中文标题】部署到 Azure 网站时,您必须向 System.Runtime... 添加引用【英文标题】:You must add a ref to System.Runtime... when deployed to Azure Websites 【发布时间】:2015-02-04 01:13:11 【问题描述】:站点在本地运行良好,但从 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 环境中进行这个额外的配置,而您认为这是完美的设置?
我想知道有什么不同,目标环境中缺少什么,以至于引用 portable 库(便携式,意味着它应该在各种环境中“正常工作”)实际上会破坏一些东西。
此外,为什么当我引用 PCL 时,在 Mscorlib 中突然找不到 System.Object
。曾几何时,我曾经明白这一切,然后一切都变得混乱。
【问题讨论】:
您是否已将using
添加到特定程序集/引用的 .cs 类的顶部..
@DJKRAZE:此错误与命名空间无关。
4.5内置的实际项目是什么版本..?还可以通过谷歌搜索到其他有相同错误的其他链接的确切错误lyalin.com/2014/04/25/…
你说你的本地机器不需要这个修复,我假设你指的是 web.config。但是如果你看看你的machine.config,里面有这个配置吗?
@mason 这是个好主意,但不行。它不在里面。在本地,System.Runtime
是 GAC,我想这就是为什么它在本地不是问题的原因。但它放在那里的是什么?
【参考方案1】:
PCL 引用 system.runtime.dll,而不是 mscorlib.dll,当 asp.net 编译您的视图页面时,它不会添加对 system.runtime.dll 的引用。在您的情况下,C# 编译器会引发错误。但不知道为什么这个问题只发生在 WAWS 环境中。
【讨论】:
以上是关于部署到 Azure 网站时,您必须向 System.Runtime... 添加引用的主要内容,如果未能解决你的问题,请参考以下文章
从 Git 本地部署到 Azure System.IO.IOException: 磁盘空间不足