我想将WinSCP .NET程序集集成到用于SFTP操作的Visual Studio 2015可执行项目中。我已经使用相关的NuGet软件包安装了程序集,其中包括WinSCPnet.dll和WinSCP.exe。
在发布或调试配置中构建解决方案时,这些文件将按预期复制到项目的bin文件夹中的相应目录中。但是一旦我单击“开始”以运行启动项目,WinSCP.exe就会消失,并且最终会引发异常,确认WinSCP.exe在预期目录中不存在。
我在网上发现的一些潜在解决方案表明,一个过分的防病毒程序可能会导致文件删除,但是尽管我将AV放入了例外,但问题仍然存在,并且使用procmon进行了一些拖尾动作,我确认 msbuild.exe是删除WinSCP.exe的罪魁祸首,我不知道为什么。
如果我独立运行解决方案,则不会发生此问题。仅当我尝试通过Visual Studio运行时才会发生,因此我无法使用调试器。我可以通过在启动解决方案之前直接从bin目录中启动WinSCP.exe GUI来解决此问题,以使msbuild.exe无法删除它(因为它正在使用中),但这长期以来是行不通的解决方案。
为什么msbuild.exe将从我的构建目录中删除WinSCP.exe,以及如何阻止它这样做?
答案 0 :(得分:1)
我知道了。由于某些原因,WinSCP-net NuGet软件包未正确安装。我注意到WinSCPnet从VS中的引用列表中丢失了,但是在安装过程中也有可能其他原因失败了,这导致msbuild想要杀死可执行文件。我重新安装了WinSCP-net NuGet软件包(我很确定多次),一旦我在引用列表中看到WinSCPnet,该问题就不再发生。