在构建我的VS2012 C#项目期间,我不断收到此错误
Error 41 Could not copy "obj\Debug\WeinGartner.WeinCad.exe" to
"bin\Debug\WeinGartner.WeinCad.exe".
Exceeded retry count of 10. Failed.
Error 42 Unable to copy file "obj\Debug\WeinGartner.WeinCad.exe" to
"bin\Debug\WeinGartner.WeinCad.exe". The process cannot access the file
'bin\Debug\WeinGartner.WeinCad.exe' because it is being used by another
process.
Run Code Online (Sandbox Code Playgroud)
现在我已经发现杀死这个过程了
Weingartner.WeinCad.vhost.exe
Run Code Online (Sandbox Code Playgroud)
工作(有时),但这让我很紧张.有什么方法可以阻止这种情况发生吗?
我的调试器设置是
当我按F5(调试模式)时没有任何反应.构建工作正常,exe文件我可以正常启动,但无法启动调试.为什么?
我已经设法让自己处于一个状态,我没有运行devenv的实例,但后台仍然是MyApp.vshost.exe(没有可见的窗口或控制台).
我已经尝试过TaskManager,ProcessExplorer和命令行(taskkill /F /IM MyApp.vshost.exe
),没有人抱怨,命令行甚至说'PID 5824已停止',但它仍然存在.
我知道我可以重启,但我宁愿深究这一点.
它看起来不像是这个问题(http://support.microsoft.com/kb/982551),因为我可以重新启动没问题(事实上,因此无法提供任何进一步的诊断,抱歉).
编辑
这就是我进入这个泡菜的方式:
今天,我突然在我的*.csproj文件中找到了这个
< UseVSHostingProcess> False </UseVSHostingProcess>
Run Code Online (Sandbox Code Playgroud)
当我把它与最新的比较它被加入
<PropertyGroup> </ Property Group>
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索了很多,发现 http://msdn.microsoft.com/en-us/library/vstudio/ms171262.aspx,我不太明白.
有人可以解释一下UseVSHostingProcess是什么以及为什么需要它.
2012-12-09摘要:
我计划使用的实际CLR托管可执行文件与此问题中概述的非常类似,除了一些小的更改:
OPR_FinalizerRun
根据Hans Passant的建议设置为某个值(当前为60秒,但可能会发生变化).CLRCreateInstance
从mscoree.dll
动态(以允许更好的错误消息没有安装兼容CLR时).Main
程序集DLL中的指定函数.感谢所有花时间阅读问题和/或评论的人.
2012-12-02帖子底部更新.
我正在使用Visual Studio 2012和.NET 4进行混合模式C++/CLI应用程序,并且惊讶地发现某些本机全局对象的析构函数没有被调用.调查的问题,它原来,他们表现得像管理对象在解释这个职位.
我对此行为感到非常惊讶(我理解它对于托管对象)并且无法在任何地方找到它,无论是在C++/CLI标准中还是在析构函数和终结器的描述中.
根据Hans Passant的评论中的建议,我将程序编译为程序集DLL并将其托管在一个小的本机可执行文件中,这确实给了我所需的行为(析构函数有足够的时间来完成和运行在同一个线程中建造)!
我的问题:
ICLRPolicyManager->SetTimeout(OPR_ProcessExit, INFINITE)
为可执行文件配置进程超时策略(即基本上调用)?这将是一个可接受的解决方法.要重现如下编译以下文件:
cl /EHa /MDd CLRHost.cpp
cl /EHa /MDd /c Native.cpp
cl /EHa /MDd /c /clr CLR.cpp
link /out:CLR.exe Native.obj CLR.obj
link /out:CLR.dll /DLL Native.obj CLR.obj
Run Code Online (Sandbox Code Playgroud)
不需要的行为:
C:\Temp\clrhost>clr.exe
[1210] …
Run Code Online (Sandbox Code Playgroud) 我正在开发现代WPF应用程序。我想使用TaskDialog,但总是会遇到常见错误:
TaskDialog功能需要加载comctl32.dll的版本6,但是当前正在内存中加载了其他版本。
我试图添加一个清单(已经包含正确的comctl32.dll所需的依赖项),并将其设置为项目属性中的默认清单。
它仍然抛出此异常:-/
我的应用程序是这样构建的:它是一个启动应用程序(正常的Windows应用程序,非wpf)。它仅具有“ Program.cs”,这是入口点。它在那里动态地加载实际的应用程序(它是一个库,而不是WPF应用程序项目)。它调用启动方法来启动应用程序。
效果很好,但是我总是会遇到这个异常。我猜这是因为有这个启动系统...但是解决该问题的可能解决方法是什么?
非常感谢 :)
[R
我正在开发一个调用非托管(C++)DLL的C#应用程序.我发现某个用户操作从Windows资源管理器运行时始终导致应用程序崩溃.但是,从Visual Studio调试器启动时,不会发生崩溃.因此,我无法在崩溃时进入代码并完全调试正在发生的事情.
什么可能导致二进制文件从资源管理器运行时崩溃,但不是从Visual Studio运行?请注意,我正在使用Release版本; 调试版本在Visual Studio 和 Explorer中都不会崩溃.
(如果它是相关的,我可以说崩溃与在C++ DLL中操作malloc分配的数组有关.我通过精心评论代码块,重建,从Windows运行并检查是否跟踪它来跟踪它.发生了崩溃.然而,我已经达到了一个难以在没有能够正确打破调试器的情况下继续进行的程度).
我只对能够在Visual Studio中重新创建崩溃感兴趣.