从 NuGet 使用 WinSCPnet 时,如何在没有 exe 副本的情况下将可执行文件放入自定义输出目录?

When using WinSCPnet from NuGet, how can I get the executable into a custom output directory without a duplicate of the exe?

我在 Visual Studio(.NET Windows 服务,带有安装项目)中使用 WinSCPnet NuGet 包,将 WinSCPnet DLL 放入我自定义的 bin 目录中没有问题输出文件夹,但将 WinSCP 可执行文件放入同一目录是一个问题。我得到的最接近的是遵循 WinSCP 指南 here,但这会在我的根输出目录中生成一个可执行文件的副本,并在我的 bin 目录中生成另一个副本。

已经遵循说明 here 并在 Stack Overflow

我的步骤:

  1. 安装 WinSCPnet NuGet 包
  2. 手动将WinSCP可执行文件复制到我的项目中并将"Copy to Output Directory"参数设置为"Copy if Newer"
  3. 在我的设置项目中设置 "Content" 输出的写入目录(内容占位符在 "bin" 目录中)
  4. 构建安装项目(和依赖项)
  5. 安装已发布的 MSI
  6. WinSCP.exe 可执行文件出现在根安装目录以及 "bin" 目录中。
  7. 由于 WinSCP 可执行文件的两个实例,安装的服务是所需大小的两倍。

谁能提供这方面的指导?

如果我没有理解错的话,您需要项目的自定义布局。我还是不明白为什么。为什么不从标准 bin 文件夹中获取文件? Imo,标准方法是设置项目采用 bin 文件夹中的内容。

无论如何,如果您需要不同的布局,请不要使用 NuGet 包。手动设置一切。参见 Using from Visual Studio section of Installing WinSCP .NET Assembly