0

我正在处理 msbuild 脚本并收到以下错误消息

 The "FtpUploadDirectoryContent" task failed unexpectedly.
error MSB4018: System.IO.IOException: The directory name is invalid.

我的脚本是

<FtpUploadDirectoryContent
        ServerHost="$(ftpHost)"
        Port="21"
        Username="$(ftpUser)"
        Password="$(ftpPass)"
        LocalDirectory="E:\demo\test.txt"
        RemoteDirectory="website/config"
        Recursive="true"
        />

我的 IIS 托管路径是 C:\inetpub\wwwroot 并且 website\config 文件夹存在于 [C:\inetpub\wwwroot\website\config] 中。但我仍然收到类似目录名称无效的消息。请告诉我如何解决这个问题。什么是正确的系统税。如果需要任何其他的东西,请建议

4

1 回答 1

0

LocalDirectory ="E:\demo\test.txt"

你给了它一个文件名,而不是一个目录。

E:\demo\test.txt 是一个文件名。

这是来自的代码

https://github.com/loresoft/msbuildtasks/blob/master/Source/MSBuild.Community.Tasks/Ftp/FtpUploadDirectoryContent.cs

            try
            {
                UploadDirectory( LocalDirectory, "*.*", Recursive );
            }
            catch(FtpException caught)
            {
                Log.LogErrorFromException( caught, false );
                Log.LogError( "Couldn't upload directory." );
                return false;
            }


       foreach(string file in Directory.GetFiles( localPath, mask ))
        {
            String filename = Path.GetFileName( file );
            Store( file, filename );

            Log.LogMessage( MessageImportance.Low, "{0} uploaded succesfully.", localPath );
        }

所以你想要做的基本上是:

 Directory.GetFiles( "E:\demo\test.txt" , "*.* ))

这是行不通的。

将其更改为:

LocalDirectory="E:\demo\"

来自上面 github 链接的示例代码。

/// <Target Name="DeployWebsite">
/// <FtpUploadDirectoryContent
/// ServerHost="ftp.myserver.com"
/// Port="42"
/// Username="user"
/// Password="p@ssw0rd"
/// LocalDirectory="c:\build\mywebsite"
/// RemoteDirectory="root\www\mywebsite"
/// Recursive="true"
/// />

注意:LocalDirectory 不引用文件名。

如果要上传单个文件,可以使用以下替代方法:

https://www.assembla.com/spaces/GHFtpTask/wiki/Home/history

MSBuild 的 FtpTask 的主要特点是:

**Upload, download or delete a single file on a FTP server** 
Recursively upload, download or delete a directory
Use multiple FTP connections simultaneously

MSBuild 的 FtpTask 需要 .NET 2.0。

于 2013-10-08T13:09:07.153 回答