[编辑:这是一个内存问题。我的电脑上的内存在此错误发生之前的几秒钟内从42%变为91%。关于支持2012年的编译器的错误消息只是一个红色的鲱鱼。该消息始终从编译器输出。 ]
我刚刚将视觉基本应用程序从VS2005转换为VS2017。
我尝试启动时出现此错误:
>应用程序中的服务器错误。编译错误说明:期间发生错误 编译服务此请求所需的资源。请 查看以下特定错误详细信息并修改您的来源 代码恰当。
编译器错误消息:编译器失败并显示错误代码 -2147024888。
显示详细的编译器输出:
C:\ Program Files(x86)\ IIS Express> Microsoft(R)Visual Basic 适用于Visual Basic 2012的编译器版本14.7.2556版权所有(c) 微软公司。保留所有权利。
此编译器作为Microsoft(R).NET Framework的一部分提供, 但只支持Visual Basic 2012以外的语言版本 不再是最新版本。对于支持更新的编译器 Visual Basic编程语言的版本,请参阅 http://go.microsoft.com/fwlink/?LinkID=533241
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.7.2556.0
以下是我的尝试:
我尝试按照说明进行操作,但这些说明似乎是针对MVC项目而我的项目是一个Web项目[注意:我是Visual Studio的新手所以我可能有错误]但我确定的是:
一个。我没有项目文件。
湾我在项目中看到了一个地球图标。
℃。当我右键单击项目(解决方案资源管理器中的地球图标)时,我没有得到属性菜单项。
那么,我如何克服这个错误,我的偏好是将我的代码更新为当前技术,而不是将库拼凑在一起以使其运行。
[编辑]此问题恰好发生在实际上有项目文件的其他项目/解决方案上。几个月前,它已从VS2005转换为VS2017,并且一直运行良好。我怀疑VS2017中的某些配置更改会影响所有解决方案。
[编辑]关于内存不足的评论似乎很有希望,除非它每次在完全相同的位置失败。重启没有帮助。这款i7配备16GB和500GB SSD,免费400GB。如果内存不足,可能是VS中的一些配置,人为地限制了该特定进程的内存。我将更深入地了解这一点。
[编辑]我安装了IIS Express 10.0.1740。
[编辑]我尝试使用nuget安装Roslyn编译器。错误消息没有改变,但可能是我需要做一些额外的配置,使它成为用于此解决方案/项目的编译器。在应用程序运行时问题正在发生,所以推测iisexpress正在进行编译。
[编辑]这也发生在具有.vbproj文件的其他项目上。我怀疑是一些导致问题的更新。
[编辑]我现在正在测试一个包含.vbproj文件的项目。要改变目标框架,我做Project - > XXX属性 - >申请 - >目标框架4.6.1。问题仍然存在。请注意消息中的警告,可能需要进行额外的手动编辑。我不知道要编辑什么,所以我没有做其他更改。
[编辑]请注意,编译器版本是14.7.2556而且它抱怨为VB2012。这似乎与https://en.wikipedia.org/wiki/Visual_Basic_.NET冲突,后者说vb编译器14.0在2015年问世。
[编辑]我在web.config中没有一个部分,所以没有什么可以删除。
[编辑]我在web.config中没有compilerOptions =标签,因此无需更改。
答案 0 :(得分:1)
使用 带有16GB和500GB SSD的i7以及400GB免费 我怀疑这是一个内存问题,我猜ERROR_NOT_ENOUGH_MEMORY是根本原因的症状:
此编译器作为Microsoft(R).NET Framework的一部分提供,但仅支持Visual Basic 2012以前的语言版本,
换句话说编译器仅适用于2012年以前的项目,因此我们只需更改.Net Framework的最新版本即可更改我们使用的commpiler(右键单击Project&gt ;物业页面):
您还可以安全地删除web.config中用于Dynamic Compilation的CodeDom:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
或者您可以更改compilerOptions="/langversion:6
编译器版本。
如果这不起作用,请在VS2005中减少https://stackoverflow.com/help/mcve我们可以重现问题并将解决方案上传到我们可以下载的位置。
答案 1 :(得分:1)
@jmcilhinney,您的目标正确。我与@Michael Potter一起工作,发现在本地计算机上,IIS在执行“网站”所需的即时编译时遇到了麻烦。我没有比这更深入的知识(并且不确定我想要什么),但是通过切换到HTML页面(它主要是SPA网站)解决了这个问题(在这种情况下)。
如果我们的代码隐藏量比我们多,那么我只需切换到“ Web应用程序”即可。