我的一个网站位于共享主机提供商,运行.net 2.0或.net 3.0,但不是3.5 SP1。
我想知道是否仍然可以通过简单地将所有3.5个程序集部署到/ bin文件夹中来使用3.5 SP1,因为从技术上来说它仍然是2.0 CLR。
我知道如果我的主人有更新我必须删除它们,否则可能会发生奇怪的事情,并且我正全速开车进入Unsupported-Territory,但是有没有任何真正的大路标说“不要做吧!“甚至“因X而不可能”?
主要原因是因为我想使用ASP.net MVC和可能的ADO.net实体框架,但我不想与另一个托管服务提供商签订合同。
谢谢!
答案 0 :(得分:2)
在理论中,它可以实现,但肯定不推荐。
Scott Hanselman发表了关于如何在安装了其他.NET 2.0的服务器上运行ASP.NET MVC的帖子,请参阅 - http://www.hanselman.com/blog/DeployingASPNETMVCOnASPNET20.aspx
虽然这是“在我的机器上工作”认证的帖子。
ASP.NET站点上的所有DLL都可以驻留在/ bin中,只要它们被正确引用即可。我的建议 - 创建一个虚拟机(MS Virtual PC是免费的),只安装.NET 2.0 / .NET 3.0,然后从.NET 3.5安装中复制你需要的DLL(提示 - 你会在%程序文件中找到DLL) %\参考装配体。)
对于您从此回答中对提供商造成的损害,我不承担任何责任
答案 1 :(得分:1)
我很确定你不能这样做,但谷歌搜索以下博客可能会得到明确的答案:
问题是,我认为:
您想加载system.dll。它看起来在哪里? GAC是否采取预防措施? (我认为确实如此),因此你得到2.0。所以你有system.dll v2.0,你尝试使用绑定到system.dll v3.5的DLL(例如system.web.mvc),但只在你/ bin ....它应该爆炸大声地,没有相同的合同等。
就个人而言,我不会尝试,特别是在制作方面。但是如果你可以把网站关闭一段时间,那就试一试吧。最坏的情况是,您必须删除文件并重新上传旧网站。
YMMV:)
答案 2 :(得分:1)
我已经在只安装了.net 3.5的主机上成功运行了一些EntityFramework网站。我从Program Files%/ Reference Assemblies复制了System.Data.Entity.dll和System.Web.Entity。我还必须修改我的web.config并删除对System.Data.Entity和System.Web.Entity的引用。
更新:此技术不适用于DynamicData或EntityDataSource Web控件。我相信它与已经存在于GAC中的System.Web.WebExtensions.dll有关。