草庐IT

runtime-compilation

全部标签

c# - Expression<TDelegate>.Compile 和垃圾收集

当我将表达式编译成可执行代码并获取委托(delegate)时-如果不再存在对该委托(delegate)的引用,代码是否会被垃圾收集?有这方面的文档吗?因为我在MSDN中没有找到任何有用的东西。 最佳答案 是的,代码可以被垃圾回收。当您对T的表达式调用编译时,代码将编译为DynamicMethod,并且那些有资格进行垃圾收集。确实在MSDN上没有说明,但您可以查看DLR中Expression.Compile的实现,这是.net4.0附带的内容:http://dlr.codeplex.com/SourceControl/changese

c# - Visual Studio 变得疯狂 : 'The directory name is invalid' error when trying to compile

出于一些非常奇怪的原因,我的VisualStudio2008在尝试编译C#项目时尝试将可执行文件的输出写入与可执行文件同名的目录,至少看起来这就是错误所在消息暗示。在我的任何项目上运行编译后,CSC.EXE报告以下编译器错误:Couldnotwritetooutputfile'D:\Projects\Examples\StringBuilderVsString\obj\Release\StringBuilderVsString.exe'--'Thedirectorynameisinvalid.'当我查看obj\Release或obj\Debug时,所有中间资源(如StringBuild

c# - 当我尝试重命名方法时,为什么 Visual Studio 告诉我有 "compiler generated references"?

我有一个名为FormattedJoin()的方法在名为ArrayUtil的实用程序类中.我尝试重命名FormattedJoin()只是Join()因为它的行为类似于.NET的string.Join()所以我认为使用相同的名称是有意义的。但是,当我尝试使用VisualStudio重命名该方法时,我收到此警告:Thismembermayhavecompilergeneratedreferenceswiththesamename.Refactoringthememberwillnotupdatethesereferences,whichmayintroducesemanticchangesa

c# - 绘制图像时 : System. Runtime.InteropServices.ExternalException: GDI 中发生一般性错误

我有一个从Panel创建的全局图形对象。每隔一定时间从磁盘中拾取图像并使用Graphics.DrawImage()绘制到面板中。它在几次迭代中工作正常,然后我得到以下有用的异常:System.Runtime.InteropServices.ExternalException:AgenericerroroccurredinGDI+.atSystem.Drawing.Graphics.CheckErrorStatus(Int32status)atSystem.Drawing.Graphics.DrawImage(Imageimage,Int32x,Int32y)atSystem.Drawi

c# - 你会在哪里使用 C# 运行时编译?

我最近在搜索其他内容时偶然在另一个网站上看到了一个关于C#运行时编译的简短讨论,我认为这个想法很有趣。你用过这个吗?我正在尝试确定如何/何时使用它以及它解决了什么问题。我很想知道您是如何使用它的,或者它在什么情况下才有意义。非常感谢。 最佳答案 通常,我看到它用在您当前正在使用反射并需要优化性能的情况下。例如,不是使用反射来调用方法X,而是在运行时生成一个动态方法来为您执行此操作。 关于c#-你会在哪里使用C#运行时编译?,我们在StackOverflow上找到一个类似的问题:

c# - CSharpCodeProvider.CompileAssemblyFromFile 中的最大错误数

我使用CSharpCodeProvider为我的应用编译即时插件。现在可以尝试编译一个文件,它看起来不错,但会产生很多错误,例如C#代码与二进制文件粘在一起。有许多字符被处理为errorCS1056:Unexpectedcharacter。这种行为是意料之中的,但是这种“恶意”文件的编译过程非常耗时。我认为合理的一个解决方案是限制错误的数量,之后CSharpCodeProvider.CompileAssemblyFromFile返回。是否可以设置这样的限制?如果可以避免的话,我一开始真的不想非常仔细地检查文件。 最佳答案 我不知道是

c# - "Edits were made which cannot be compiled"。在 vs2010 中选中零错误和启用并编辑并继续

我能够在Debug模式下编辑我的代码,但随后弹出显示错误Editsweremadewhichcannotbecompiled.Executioncannotcontinueuntilthecompileerrorsarefixed但错误列表为空,我已选中启用编辑并继续。我使用的是vs2010。清理重启也没有解决问题。 最佳答案 当您的工作区损坏时,可能会出现此问题。只需关闭VisualStudio,删除(或者最好先重命名).vs文件夹,然后再次启动VisualStudio。它甚至可以在VS2017中发生。

c# - 接口(interface)继承多个接口(interface) : how is this handled by a C# compiler?

最近我发现C#允许Aninterfacecaninheritfromoneormorebaseinterfaces.例如,Caliburn.Micro中的IScreen在http://caliburnmicro.codeplex.com/SourceControl/latest#src/Caliburn.Micro/IScreen.cs中执行此操作namespaceCaliburn.Micro{publicinterfaceIScreen:IHaveDisplayName,IActivate,IDeactivate,IGuardClose,INotifyPropertyChangedE

c# - HRESULT 异常 : 0x8002000B (DISP_E_BADINDEX) for System. Runtime.InteropServices.COMException

我有一部分代码试图将数据(从数据库)导出到Excel。当我尝试执行此任务时,它会生成此错误:System.Runtime.InteropServices.COMExceptionoccurredAdditionalinformation:Invalidindex.(ExceptionfromHRESULT:0x8002000B(DISP_E_BADINDEX))产生此错误的代码:stringExcelFileName=RootFolder+"\\"+"Work_Sheet.xls";File.Copy(RootFolder+"\\"+"WorksOrder_Template.xls",

c# - 如何修复 'compiler error - cannot convert from method group to System.Delegate' ?

publicMainWindow(){CommandManager.AddExecutedHandler(this,ExecuteHandler);}voidExecuteHandler(objectsender,ExecutedRoutedEventArgse){}错误1​​参数2:无法从“方法组”转换为“System.Delegate” 最佳答案 我猜有多个具有不同签名的ExecuteHandler。只需将您的处理程序转换为您想要的版本:CommandManager.AddExecuteHandler(this,(Action)