2

为了改进我的 ASP.NET 应用程序的部署/构建过程,我想做.bat一个

  • 以发布模式构建当前解决方案
  • xcopy文件到远程服务器

通过命令行创建发布版本很容易。

但是如何将文件复制到远程服务器?

我想我必须将远程目的地映射到网络驱动器(?)。但是,尽管我已为服务器上的文件夹启用文件共享,但我无法连接到远程服务器。也许防火墙阻止了请求?我应该打开哪个端口?还是有其他解决方案?

编辑

感谢到目前为止的所有答案,但我可能需要有关如何在服务器上设置文件夹共享的分步指南。我共享了文件夹,我打开了端口 445 以便我可以连接到服务器,但我仍然无法从本地计算机连接到服务器,以便将网络路径映射到系统驱动器。

4

8 回答 8

3

通过 UNC 路径使用 XCOPY 移动文件可能值得

\\机器\文件夹

这将要求您可以从原始服务器访问文件夹。检查文件夹是否已共享,并且已授予相关的读/写权限。

于 2009-11-26T10:28:10.243 回答
3

由于您正在部署一个 ASP.Net 站点,我假设您在 Windows 环境中(不聪明吗?:))。
所以 !忘记 .bat 并选择POWERSHELL

无论如何,这不是您问题的重点...要复制到远程文件夹,您应该有权在远程计算机上执行此操作。

检查您在本地计算机和远程计算机上是否有相同的帐户。例如,如果您使用登录名“Pipo”登录域“Work”中的本地计算机,则您必须授予该帐户写入远程计算机上特殊文件夹的权限。

您可以通过右键单击文件夹、安全选项,然后选择正确的身份来实现。

这是一个分步指南:

http://support.microsoft.com/kb/301281

于 2009-11-26T15:12:12.593 回答
1

如果服务器在您的本地网络上,我建议使用robocopy而不是xcopy- 它有更多有用的选项和重试错误的能力。它可以很好地处理 UNC 名称(我相信xcopy也是如此)。我认为它可以在较新的 Windows 客户端上使用——如果它不在你的机器上谷歌的话——它可以在各种资源工具包下载中使用(我不知道微软是否/何时开始将它包含在操作系统发行版中的详细信息,因为我已经很长一段时间以来,它一直在我的实用工具包中使用)。

如果服务器不是本地服务器,您可以编写命令行 FTP 客户端脚本来执行传输。如果您需要额外的灵活性或安全性,还有许多其他文件传输选项,包括WinSCP

当然,在任何一种情况下(本地或远程服务器),服务器的权限和您的身份验证都需要正确设置才能有机会工作。

于 2009-11-26T10:34:46.040 回答
1

您可以使用任何 UNC 路径:\\machine\sharedFolder. 如果您不想设置共享文件夹,您可以使用 $ 符号引用机器上的任何驱动器:\\machine\c$\program files\etc。如果您的计算机位于 Active Directory 中,或者如果您在目标计算机上有一个具有相同用户名和密码的本地用户,Windows 将无缝处理身份验证。

于 2009-11-26T10:34:51.470 回答
0

你试过释放它吗?

http://www.eworldui.net/unleashit/

它可以跨网络移动文件、运行预构建的 bat 文件、文件屏蔽等......

我以前在 .net 1.1 项目中使用过它。

于 2009-11-26T10:30:35.153 回答
0

我想你想要:

XCOPY c:\myproject\build\*.* \\server\\build\ /S /E
于 2009-11-26T10:41:01.337 回答
0

以上所有似乎都是很好的答案——你可以考虑使用 msbuild 脚本和 msbuild 社区任务来完成所有这些——他们可以压缩你的构建并将其 ftp 到远程服务器。

我刚刚为我们的一个站点设置了这个,花了几个小时来了解它,但它在发布中构建站点,更新配置文件以进行生产,删除不必要的文件,然后进行上传。

于 2009-11-26T10:46:26.587 回答
0

在寻找了这么多答案后,这里是解决方案

"xcopy D:\\folder\\container \\\\servername\\folder\\container\\ \/E \/H \/Y"
于 2017-11-09T13:17:53.130 回答