构建错误:“表达式太长或复杂,以编译” -- c# 领域 和 visual-studio-2010 领域 和 .net-4.0 领域 相关 的问题

Build error: “An expression is too long or complex to compile”


12
vote

问题

中文

每个现在,当我构建一个特定的解决方案时,我会在错误列表窗口中获得随机量的"表达式太长或复杂" 。但是,错误点唯一的项目是特定项目,而不是项目中的文件或特定位置。

当我遇到这个时,我'干净'然后我重新启动vs,似乎修复它。关于导致此内容的任何想法?

这个特定的解决方案有50个项目。

英文原文

Every now and then when I build a specific solution, I'll get a random amount of "An expression is too long or complex to compile" in the Error List window. However, the only item the error points to is the specific project, not a file within the project or a specific LOC.

When I encounter this, I 'Clean' and then I restart VS and that seems to fix it. Any ideas on what is causing this?

This particular solution has 50 projects in it.

        
         
         

回答列表

15
 
vote
vote
最佳答案
 

fyi,该错误是堆栈空间中的编译器的特征。通常,当您在编译器中抛出"深度递归" 问题时,就像这样说,

  int x = (1 + (1 + (1 + (1 + ......... + 1 ) + 1 ) + 1 ) + 1);   

说,几千个深。句法和语义分析仪都是递归 - 下降分析仪,因此在极端情况下容易耗尽堆栈空间。

我不知道为什么关闭并重新开始会影响那个。这真的很奇怪。

如果你得到一个坚实的repro,我很乐意看到它。在这里发布它,或者在连接上输入一个错误,我们会看看它。没有坚实的repro虽然很难说这里发生了什么。

 

FYI, that error is characteristic of the compiler running out of stack space. Typically that happens when you throw a "deep recursion" problem at the compiler, like say,

int x = (1 + (1 + (1 + (1 + ......... + 1 ) + 1 ) + 1 ) + 1); 

say, several thousand deep. The syntactic and semantic analyzers are both recursive-descent analyzers and therefore prone to running out of stack space in extreme scenarios.

I have no idea why shutting down and starting over would affect that, though. That is really strange.

If you get a solid repro, I'd love to see it. Either post it here, or enter a bug on Connect and we'll have a look at it. Without a solid repro though it is very hard to say what is going on here.

 
 
         
         
4
 
vote

当我从Visual Studio 2012转换为Visual Studio社区2013时,我在一个项目中收到了这个错误。 在我的情况下,它是Gent List<string[]> 初始化的巨型文件(由ME写的25k线)。

这样的东西:

  public class Class {      public List<string[]> BigList     {         get         {             return new List<string[]>()             {                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 .                 .                 .                 .                 .                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"}             }         }     } }   

我将其更改为 string[][] 并且项目开始编译

  public class Class {      public string[][] BigList     {         get         {             return new string[][]             {                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 .                 .                 .                 .                 .                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"}             }         }     } }   
 

I got this error in one project when I switched from Visual Studio 2012 to Visual Studio Community 2013. In my case it was giant file (25k lines, not written by me) with had List<string[]> initialized by collection initializer.

Something like this:

public class Class {      public List<string[]> BigList     {         get         {             return new List<string[]>()             {                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 .                 .                 .                 .                 .                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"}             }         }     } } 

I changed it to string[][] and the project started to compile

public class Class {      public string[][] BigList     {         get         {             return new string[][]             {                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 .                 .                 .                 .                 .                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"},                 new string[]{"foo","bar"}             }         }     } } 
 
 
   
   
2
 
vote

在构建时,您可以看到build输出在失败之前检查的最后一个文件夹。我删除了该文件夹中的文件,并将它们逐个带回。终于找到了这个问题。我确切地知道它是什么,但它是一个有很多HTML的.aspx页面。它经常使用,所以我刚刚从项目中删除它,现在它编译。<​​/ p>

输入图像描述

输入图像描述

 

When building you can see the the build output the last folder it checks before it fails. I removed the files in that folder and brought them back one by one. Finally found the issue. I dont know exactly what it is but it was a .aspx page with lots of HTML. It wasnt used often so I just removed it from the project and now it compiles.

enter image description here

enter image description here

 
 
2
 
vote

我在64位机器中存在相同的问题(VS 2012)。

我使用了@ mikeflynn的答案来定位夹的夹导致错误。

最后我发现了我有一个help.aspx页面,没有代码背后 - 只是html 但它有多个图标图像,嵌入为基础64

  <img src="data:image/png;base64 ... />   

我将它转换为静态HTML,它编译了。

p.s。同一个项目正在编制O.K.在32位VS2012机器中。 两台机器都运行Windows 7。

 

I had the same problem in a 64-bit machine (VS 2012).

I used @MikeFlynn's answer to locate the folder causing the error.

Finally I discovered I had a Help.aspx page with no code behind - just HTML but it had multiple icon images embedded as base 64

<img src="data:image/png;base64 ... /> 

I converted it to static HTML and it compiled.

P.S. The same project was compiling O.K. in a 32-bit VS2012 machine. Both machines were running Windows 7.

 
 
2
 
vote

我今天在Visual Studio 2019中得到了这个问题。我有一个非常长的字符串

  <img height="445" src="data:image/png;base64,iVBORw...   

在我的file.aspx文件中。甚至在VS2019中的长图像即可导致此问题。

 

I got this problem today in visual studio 2019. I got a really long string

<img height="445" src="data:image/png;base64,iVBORw... 

in my file.aspx file. Even long images in vs2019 that can cause this problem.

 
 
1
 
vote

如果清洁和重建工作,则代码显然不是问题。您应该向Microsoft报告此似乎是VS错误。

 

If cleaning and rebuilding works, it's obviously not a problem with your code. You should report this to Microsoft, seems like a VS bug.

 
 
1
 
vote

我今天得到了这个问题。不知何故,我在我的 index.cshtml 文件中得到了一个非常长的字符串。所以检查可能导致此问题的长条带。

 

I got this problem today. Somehow I got a really long string in my index.cshtml file. So check for long strings that can cause this problem.

 
 
0
 
vote

我从未在野外见过这个。

但是,从谷歌曲围绕它可能来自多余的装配参考文献,一个特定的Quote:

如果我将引用的程序集数量减少到5500,则编译和工作

现在,肯定地,你会注意到一个大的依赖列表,你能检查你是否有大量引用的装配?

 

I have never seen this in the wild.

However, from googling around it may well be from an excess of assembly references, one particular quote:

If I reduce number of referenced assemblies to 5500 it is compiled and working

Now, surely, you would have noticed a dependency list that large, could you check whether you have an overly large number of assemblies referenced?

 
 
     
     
0
 
vote

我收到了非常大的SVG文件的错误原因。在Google和一些个人实验之后,我发现大型SVG文件的解决方案是:

  @Html.Raw(File.ReadAllText(Server.MapPath("~/image.svg")))   

在razor文件中,还有其他方法与html部分,但遗憾的是这个技巧不使用大svg文件。

希望这个帮助..

 

i got this error cause of very big svg file. and after google it and some personal experiment i found that the solution for big svg file is:

@Html.Raw(File.ReadAllText(Server.MapPath("~/image.svg"))) 

in razor file there is another approach with html partial but unfortunately this trick is not working with big svg file.

hope this help..

 
 
0
 
vote

我可以分享我们这个错误的经验。典型的Microsoft杰作(或只是一件......)我们的问题实际上是由于IIS编译的太多DLL。诊断它是一种痛苦(因为诊断是不存在的)。从主箱文件夹中删除一些不必要的DLL(如单位测试DLL)已经摆脱了问题。去图...

 

I can share our experience with this error. Typical Microsoft masterpiece (or just a piece...) Our problem was actually due to too many DLLs for IIS to compile. Diagnosing it was a pain (as diagnostics is nonexistent). Removing some unnecessary DLLs (like unit test DLLs) from the main BIN folder has gotten rid of the problem. Go figure...

 
 
0
 
vote

在从IDE运行时,应用程序正常工作,在托管到IIS时,在尝试在图像和Base64的基础上的许多步骤之后,上面的错误即将到来。在发布Web.config为ME设置后,早期的debug ="true" 已设置,使其成为false,它工作。

  <compilation debug="false" defaultLanguage="c#" maxBatchGeneratedFileSize="1000" maxBatchSize="1000" targetFramework="4.5">   
 

While running from IDE, the application was working fine, on hosting into IIS, the above error was coming, after trying out many steps given base on images and base64, etc. Following setting on the publish web.config worked for me, earlier debug = "true" was set, made it false, and it worked.

<compilation debug="false" defaultLanguage="c#" maxBatchGeneratedFileSize="1000" maxBatchSize="1000" targetFramework="4.5"> 
 
 

相关问题

-2  将外键添加到AspnetUser表  ( Add foreign key to aspnetuser table ) 
我创建了一个带有用户身份的ASP.NET核心剃刀页面应用程序。 创建的项目包括添加所有用户表的迁移,例如 AspNetUser 和 AspNetRoles 。但是,它不会为这些表创建任何代码模型。 现在我现在创建了自己的实体模型,我希望其中一些是 AspNetUser 表的外键。 我该怎么办?该平台是否随意将其视为课...

0  如何在没有浏览器的情况下以编程方式上传/发布图像到托管网站?  ( How to programatically upload post an image to an image hosting website without ) 
我想编写一个简单的实用程序,以通过文件的右键单击上下文菜单将图像上传到各种自由映像托管网站的网站。 如何使用.NET来做这个?我已经看到了一些使用卷曲将图像发布到这些网站的Linux脚本,但我不确定如何创建发布的帖子请求,在C#中填写图像? 有人可以指向我的正确方向吗? 编辑: 我发现了一个非常好的资源。 TRAC...

2  使用用户名/密码验证与ActiveMQ的连接  ( Authenticate connection to activemq with username password ) 
我有一个运行OK发送消息到Activemq的应用程序。我正在使用Spring.NET和NMStopt连接到代理。 XML配置文件一般为: <object id="ActiveMqConnectionFactory" type="Apache.NMS.ActiveMQ.ConnectionFact...

7  以编程方式读取SQL Server的查询计划建议对SQL的特定执行的索引?  ( Programatically read sql servers query plan suggested indexes for a specific ex ) 
如果我在SSMS中运行此命令: set showplan_xml on GO exec some_procedure 'arg1', 'arg2','arg3' GO set showplan_xml off GO 我得到了查询执行中涉及的完整调用堆栈的XML输出,以及任何建议的索引等。 如何从c#中读取这...

-1  WPF自定义按钮和DependencyObject  ( Wpf custom button and dependencyobject ) 
我正在尝试使用属性 ButtonTheme 创建自定义 Button 。 这应该负责按钮的背景。我想在XAML代码中设置它。 我的自定义按钮 public enum Theme { Black, White } public class BugButton : Button { pu...

0  导入在字段中包含多个值的CSV文件  ( Importing a csv file that contains more than one value in a field ) 
这里是我尝试从csv 导入的数据 Time|Person|Products|Address (now)|person1|val1*val2*val3|adr1 其中 * 是一个划线/回车返回 这是我导入它时的样子: (now)|person1|val1val2val3|adr1 这是...

0  是否有一种方法可以在实体上的所有插入/删除结束时触发存储过程  ( Is there a way to trigger a stored procedure at the end of all the insert delete ) 
我的应用程序正在使用实体帧工作,并且有一个名为t_detail的表,该表包含多个记录。保存应用程序时,此实体已删除并添加。 我在此表上也有一个SQL DB触发器,该表在此表上发生了插入/删除时会执行。由于实体逐一删除每个条目并逐个插入,因此它触发DB触发删除或插入的每个实例,并且性能变慢。 有没有办法,我可以在所有删...

-1  如何检查挂在检查器上的可脚本对象是否正在实现界面?  ( How can i check if a scriptable object dragged onto inspector is implementing an ) 
对于我的Unity项目,我正在尝试制作一个自定义属性抽屉,以便使Inspector接受仅实现接口I通过属性参数的对象。我很高兴我达到了妇女的任务,适合Monobehaviour对象。但是,我遇到了应用类似的脚主对象的方法。我需要帮助。 这是我的房地产抽屉代码。问题是C#,DONT让我做一个"是" 关键字的类型检查。这...

0  如何通过system.xml中的C#中的XML文件线中排行排行  ( How to comment out line by line of a xml file in c sharp with system xml ) 
我需要用文件中使用 99887669 解释文件中的子节点的发表评论和取消注释XML节点。 启动XML: ButtonTheme0 评论整个节点不会是一个问题,并且在这个示例 这意味着我必须通过XML文件的行注出排行,因此我不会用嵌套评论摧毁XML文件结构。 所需输出: ButtonTheme1 是可...

6  构造函数链接的目的?  ( Purpose of constructor chaining ) 
读完这个构造函数链接问题< / a>我只是好奇了解为什么任何一个人都会制作呢? 可以有些人请在这可能有用的场景上阐明一些光线。 这是一个很好的编程实践吗? ...

1  通过GetItemParameters设置DefaultValues传递Parametervalues  ( Passing parametervalues with getitemparameters setting defaultvalues ) 
我有一个自定义webform来创建SSRS订阅。为了确定是否存在默认复选框以及检查该复选框是否检查,我将示出参数.DefaultValues。 (如果param.defaultvalues == null然后没有创建默认复选框) 因为我正在使用级联参数(依赖性),我在设置parametervalues for res...

5  如何在锯齿状数组中找到唯一值  ( How to find unique values in jagged array ) 
我想知道如何计算锯齿状数组中唯一值的数量。 我的域对象包含一个字符串属性,具有空格分隔值。 class MyObject { string MyProperty; //e.g = "v1 v2 v3" } 给出 list myObject 如何确定唯一值的数量? 以下LINQ代码返回锯齿状数组值...

0  FileContentResult行动产生不完整的文件  ( Filecontentresult action yielding incomplete file ) 
我一整天都在努力和研究这个。手指越过,这里有人可以帮助我。 :) 前言:我非常,asp很新,所以我向我的无知道歉。 目的:我希望能够通过下载按钮以各种格式返回生成的报告。报告已生成正常,我将它们以String格式置于Device Shubled ovewhere。 我们正在使用剃刀mvc为我们的页面,因此我有一个动...

4  WCF是否优化引擎盖下的客户端?  ( Does wcf optimize the clients connection under the hood ) 
我们目前正在处理将使用WCF服务的应用程序。主机(客户)使用优秀的来自Erwyn Van der Meer 的WCF服务代理助手。 我想知道的是什么......如果我多次打开这个对象...它会导致多个(昂贵的)连接,也会导致WCF管理它并汇集连接。 为什么我想知道这是因为我们将在同一Web请求中的不同时间点调用服务的...

6  DI的Neventstore组件的对象组成  ( Objects composition of neventstore components for di ) 
我正在将enventstore添加到我现有的项目中,我正在使用di。 我想拥有一个 CommonDomain.Persistence.EventStore.IRepository 注入我的MVC控制器的实例。 这个接口的唯一实现 <代码> EventStoreRepository 。 此类取决于 IConstruc...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.