当我尝试在VS 2008中编译程序集时,我得到(偶尔,通常在项目工作2-3小时后)以下错误
Metadata file '[name].dll' could not be opened --
'Not enough storage is available to process this command.
Run Code Online (Sandbox Code Playgroud)
通常要摆脱我需要重新启动Visual Studio
我需要在我的项目中使用的程序集足够大(> 70 Mb),可能这就是这个bug的原因,我以前的项目中从未见过这样的事情.好吧,如果这就是我的问题是为什么会发生这种情况以及我需要做些什么来阻止它的原因.
我的驱动器和2Gb RAM上有足够的可用内存(异常发生时仅使用~1.2 Gb)
我用谷歌搜索了这样的问题的答案.
建议通常涉及:
- 到WinXP中限制的用户处理程序数量...
- 到每个进程可用的内存物理限制
我认为不能解释我的情况
对于用户处理程序和其他GUI资源 - 我不认为这可能是一个问题.大型70Mb程序集实际上是一个无GUI的代码,可以使用套接字操作并实现专有协议的解析器.在我目前的项目中,我只有3个GUI表单,GUI控件总数<100.
我想我的情况更接近于这样一个事实:在Windows XP中,进程地址空间受限于2 GB内存(考虑到内存分段,我可能没有足够大的空闲段来分配内存).
但是,很难相信在Visual Studio中使用项目2-3小时后,细分可能会如此之大.任务管理器显示VS消耗大约400-500 Mb(OM + VM).在编译期间,VS只需要加载元数据.
好吧,该库中有很多类和接口,但我仍然希望1-2 Mb足以分配编译器用来查找所有公共类和接口的元数据(虽然这只是我的建议) ,我不知道CLR加载程序集元数据时内部究竟发生了什么.
另外,我会说整个程序集的大小是如此之大,因为它是C++ CLI将其他um管理的库静态链接到一个库中的库DLL.我估计(使用Reflector).NET(托管)代码约占此程序集的5-10%.
任何想法如何定义该错误的真正原因?.NET程序集大小是否有任何限制或建议?(是的,我知道值得考虑重构和将大型组件拆分成几个较小的组件,但它是第三方组件,我无法重建它)
下面是通过使用Sheet2上的值范围(条件范围)将高级过滤器应用于Sheet1工作表(列表范围)上的列A的代码
Range("A1:A100").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets("Sheet2").Range("A1:A10"), Unique:=False
Run Code Online (Sandbox Code Playgroud)
运行此代码后,我需要对屏幕上当前可见的行执行某些操作.
目前我使用这样的代码
For i = 1 to maxRow
If Not ActiveSheet.Row(i).Hidden then
...do something that I need to do with that rows
EndIf
Next
Run Code Online (Sandbox Code Playgroud)
应用高级过滤器后,是否有任何简单的属性可以为我提供一系列行?
我有一个VS2012/.NET4.5解决方案,有大量的单元测试
从解决方案运行所有单元测试时,我随机收到"QTAgent32.exe已停止工作"错误消息,此时单元测试挂起.
我的单元测试实际上是MSTest,我使用VS的Resharper菜单运行它们.Resharper Edition是7.1.3,不确定是否重要.VS 2012 SP 3
.net resharper unit-testing visual-studio visual-studio-2012
要满足要求,我必须手动显示工具提示30秒.根据msdn我只需要使用"显示"方法.
toolTip.Show(QuestionHelpText, btnHelp, 30000);
Run Code Online (Sandbox Code Playgroud)
但我只得到标准的工具提示行为,这意味着在我点击后半秒钟内出现消息(仅因为鼠标指针仍在按钮上).我尝试了一些变化
toolTip.Show(QuestionHelpText, btnHelp);
Run Code Online (Sandbox Code Playgroud)
但是,没有任何反应.
有人知道为什么会这样吗?
谢谢
我有一个遗留FoxPro exe应用程序.
源代码不可用(它是用外包编写的,源代码从未提供过).
有人要求在C#中编写完全相同的应用程序,然后开发新功能.要求过时了.虽然我们可以看到应用程序在UI上做了什么,但我们也想了解内部逻辑.
是否有任何可以像.Net Reflector一样使用.NET程序集的工具?
我在MS Access 2003模块中开发了一个小的VBA程序(只有一个公共Sub)数据库只为我锁定,没有其他人可以访问该文件.我的代码有效,但我想找到并修复一个小错误
我需要调试我的VBA代码.我把断点放在程序的第一行.
但是,当我运行此代码时,它永远不会在断点处停止,也永远不会进入调试模式.似乎VBA调试器无法正常工作或禁用.我无法找到任何选项如何禁用/启用VBA调试器,我认为它应该始终启用.现在我只能在放入大量消息框的情况下调试此代码,但这需要花费很多时间......
问题:我们有一个调用第 3 方 API 的 AWS Lambda 函数。该第 3 方系统存在一些并发问题,因此在某些情况下,如果我们从同时运行的 lambda 函数的多个实例调用该 API,我们最终会在第 3 方系统中创建重复的对象。该系统的供应商不承诺快速解决该问题,因此目前我们需要避免调用该 API 的代码部分的并发
当文件被放入 S3 存储桶时,我们的 Lambda 函数就会被触发,因此当同时放入多个文件时,每个文件都会通过并行运行该函数的实例来处理。
出于性能原因,我们希望继续并发处理文件,因此我们不考虑使用队列(如 SQS)将文件放入队列,然后依次调用每个文件的 lambda 函数的解决方案。
编写一种最简单的方法是什么
threading.lock()
Run Code Online (Sandbox Code Playgroud)
命令来阻止调用第 3 方 API 的代码的关键部分在并行实例中执行?
我们认为我们可以通过更新 DynamoDB 中的值并检查它是否被锁定来实现这一点,但目前我们不使用 DynamoDb ,我们的解决方案包含 S3 存储桶和无服务器组件,例如 AWS Step Functions、Lambda 函数、粘合作业,因此仅仅为了控制锁的单一目的而引入数据库听起来有点矫枉过正
有任何想法欢迎提出
我们使用EF5.0和MS SQL Server的代码优先方法我已经阅读了一篇文章 http://msdn.microsoft.com/en-us/data/jj691402.aspx
并决定在我们的数据库上尝试相同的方法
但是,假设我的商店程序包含这样的查询
SELECT * from [dbo].[MyEntities] as MyEntity
where ID = @ID
Run Code Online (Sandbox Code Playgroud)
和C#中的代码是
var entities = Context.ObjectContext.Translate<MyEntity>(reader, "MyEntity", MergeOption.AppendOnly);
Run Code Online (Sandbox Code Playgroud)
我正在这一点上
System.Data.Entity.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理
其他信息:找不到EntitySet名称"MyDbContext.MyEntity".
因此,显然它添加了一些上下文名称作为EntitySet名称的前缀,而不是MyEntity在结果集中查找MyDbContext.MyEntity.
导致此行为的原因以及是否存在任何workaroud(因为在上面引用的示例中,它看起来非常简单且不需要特定的操作,除了调用db.Database.Initialize(force:false);(我在我的代码中执行)以及)
c# ×3
vba ×2
.net ×1
aws-lambda ×1
concurrency ×1
debugging ×1
disassembly ×1
excel ×1
foxpro ×1
memory-leaks ×1
metadata ×1
ms-access ×1
resharper ×1
sql-server ×1
tooltip ×1
unit-testing ×1
winforms ×1