我通过项目属性为我的 .dll 项目设置了一个输出文件夹,我称之为“输出”。
问题是,从一个空的输出文件夹中,我第一次构建项目时,它很好。第二次,我收到以下错误:
Error 328 Unable to copy file "obj\Release\MyLibrary.dll" to "......\Output\Release\MyLibrary.dll". The process cannot access the file '......\Output\Release\MyLibrary.dll' because it is being used by another process.
“另一个进程”是 Visual Studio 中的 vshost.exe。由于它一直在访问 MyLibrary.dll,因此无法删除或替换它,因此为什么会出现错误。这会使输出文件夹上的 MyLibrary.dll 保持不更新。但是,我的解决方案中有其他 .dll 项目不会发生这种情况。
到目前为止我用来更新它的解决方案是关闭 VS(从而关闭 vshost.exe),然后运行一个删除文件 Output\Release\MyLibrary.dll 的 .bat 文件,然后再次打开 VS 并重建它的项目。
我对 vshost.exe 究竟做了什么知之甚少,所以我不知道从哪里开始从根本上解决这个问题。我不知道为什么这会发生在特定的 .dll 上。我感谢任何有助于我调查为什么会发生这种情况的想法。
最佳答案
vshost.exe 是 Visual Studio 托管进程。它是一个自定义 CLR 主机,可以加载您的 EXE 并使调试更容易。你可以关掉它,副作用很少。项目 + 属性,调试选项卡,取消勾选“启用 Visual Studio 托管进程”选项。
您现在更有可能在您的程序中找到真正的问题。最常见的问题是您的程序在您要求时不会退出。您将仍然收到构建错误,您现在会看到自己的 EXE 被指为锁定 DLL 的那个。您还将在任务管理器的“进程”选项卡中看到它。这也可以让你杀死它。
我不清楚程序员是如何重现这个问题的。按 Ctrl+F5 而不是 F5 肯定会做到这一点,总是按 F5 以在启动程序时立即附加调试器。使用 Debugger + Stop Debugging 现在可以可靠地停止程序。否则,您可以使用 Tools + Attach to Process 稍后再次附加调试器,以了解您的程序在做什么。
反恶意软件是一个值得一提的常见祸害,当他们看到一个不知从何而来的可执行文件时,他们会方式过于兴奋。如果你用的是 Avast 那就完全卸载它,它与 VS 完全不兼容。
关于c# - vshost.exe 一直在访问我的 .dll,我在构建它时无法更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19662662/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我